在 nodejs 中禁用会话 Passport.js
Disabling sessions in nodejs Passport.js
我刚刚发现 Tokens for authentication 允许 session/stateless 服务器并从 MEAN 开始。看起来很棒。
现在,我正在使用 Passport.js
对用户进行身份验证(通过电子邮件、Facebook、Google、...),它将信息存储到服务器会话中,就像所有教程所说的那样:
// required for passport
app.use(express.session({
secret : 'superscret',
expires: new Date(+new Date + settings.session.sessionTimeout),
store: new MongoStore({})
})); // session secret
app.use(passport.initialize());
app.use(passport.session({}));
是否可以继续使用 Passport.js
但不是存储会话,而是发回令牌以监控用户是否具有访问权限。
问题:如何禁用护照会话? (我知道如何发送令牌并收听它)。
我建议使用 satellizer, de-facto standard library for token based authentication in AngularJS. It implements token based authentication only and is much easier to get working for your purposes. It also has good server examples, including Node.js server example。
passportjs
支持禁用会话。文档 passport
身份验证成功后,Passport 将建立持久登录会话。这对于用户通过浏览器访问 Web 应用程序的常见场景很有用。但是,在某些情况下,会话支持不是必需的。例如,API 服务器通常需要在每个请求中提供凭据。在这种情况下,可以通过设置 session option to false
.
安全地禁用会话支持
app.get('/api/users/me',
passport.authenticate('basic', { session: false }),
function(req, res) {
res.json({ id: req.user.id, username: req.user.username });
});
我刚刚发现 Tokens for authentication 允许 session/stateless 服务器并从 MEAN 开始。看起来很棒。
现在,我正在使用 Passport.js
对用户进行身份验证(通过电子邮件、Facebook、Google、...),它将信息存储到服务器会话中,就像所有教程所说的那样:
// required for passport
app.use(express.session({
secret : 'superscret',
expires: new Date(+new Date + settings.session.sessionTimeout),
store: new MongoStore({})
})); // session secret
app.use(passport.initialize());
app.use(passport.session({}));
是否可以继续使用 Passport.js
但不是存储会话,而是发回令牌以监控用户是否具有访问权限。
问题:如何禁用护照会话? (我知道如何发送令牌并收听它)。
我建议使用 satellizer, de-facto standard library for token based authentication in AngularJS. It implements token based authentication only and is much easier to get working for your purposes. It also has good server examples, including Node.js server example。
passportjs
支持禁用会话。文档 passport
身份验证成功后,Passport 将建立持久登录会话。这对于用户通过浏览器访问 Web 应用程序的常见场景很有用。但是,在某些情况下,会话支持不是必需的。例如,API 服务器通常需要在每个请求中提供凭据。在这种情况下,可以通过设置 session option to false
.
app.get('/api/users/me',
passport.authenticate('basic', { session: false }),
function(req, res) {
res.json({ id: req.user.id, username: req.user.username });
});