Passport.js,具有相同凭据的快速会话跨浏览器
Passport.js, Express session Cross-browser with same credentials
我已经用 Passport.js
编写了用于身份验证的代码。当用户登录到 chrome
并使用相同的凭据用户登录到另一个浏览器时 'FF'。
众所周知,Passport.js
将所有详细信息存储到 req.users
和 req.session.passport.users
中。如果从一个浏览器用户更新一些细节,我们如何在不注销的情况下更新到另一个浏览器 req
对象?
同样,如果管理员更新用户 1 的详细信息并且他已经登录,那会有什么影响?
有线索吗?
As we all know that Passport.js
store all details into req.users
and
不一定。 passport.js
没有 store
req.user
中的用户详细信息,但是您的 passport.js
集成代码 loads
来自某些后端存储的用户详细信息,然后将其放入请求对象中根据每个请求。
因此,由您决定在后端更新用户并决定何时在每个请求上检索新版本(而不是仅仅反序列化 jwt
,例如)。
示例代码来自 http://www.passportjs.org/docs/basic-digest/
passport.use(new BasicStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.validPassword(password)) { return done(null, false); }
return done(null, user);
});
}
));
这段代码在每个请求上执行,这意味着在对服务器的每个请求中,您的用户都会从您的数据库中加载。
即使您在多个浏览器中处理多个会话,结果也是一样的。因此,您可以自行决定何时以及如何更新数据库中的用户。
否则,如果您不从外部数据源加载用户,而是例如从 jwt
反序列化整个用户对象(除非您真正了解自己在做什么,否则不推荐这样做)然后您需要考虑同步策略,例如检查 db
中的某些 updated
标志或反序列化时的某些缓存
我已经用 Passport.js
编写了用于身份验证的代码。当用户登录到 chrome
并使用相同的凭据用户登录到另一个浏览器时 'FF'。
众所周知,Passport.js
将所有详细信息存储到 req.users
和 req.session.passport.users
中。如果从一个浏览器用户更新一些细节,我们如何在不注销的情况下更新到另一个浏览器 req
对象?
同样,如果管理员更新用户 1 的详细信息并且他已经登录,那会有什么影响?
有线索吗?
As we all know that
Passport.js
store all details intoreq.users
and
不一定。 passport.js
没有 store
req.user
中的用户详细信息,但是您的 passport.js
集成代码 loads
来自某些后端存储的用户详细信息,然后将其放入请求对象中根据每个请求。
因此,由您决定在后端更新用户并决定何时在每个请求上检索新版本(而不是仅仅反序列化 jwt
,例如)。
示例代码来自 http://www.passportjs.org/docs/basic-digest/
passport.use(new BasicStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false); }
if (!user.validPassword(password)) { return done(null, false); }
return done(null, user);
});
}
));
这段代码在每个请求上执行,这意味着在对服务器的每个请求中,您的用户都会从您的数据库中加载。
即使您在多个浏览器中处理多个会话,结果也是一样的。因此,您可以自行决定何时以及如何更新数据库中的用户。
否则,如果您不从外部数据源加载用户,而是例如从 jwt
反序列化整个用户对象(除非您真正了解自己在做什么,否则不推荐这样做)然后您需要考虑同步策略,例如检查 db
中的某些 updated
标志或反序列化时的某些缓存