在Node JS中用于身份验证的护照
Passport for authentication in Node JS
我正在考虑在Node项目中使用Passport Library (http://passportjs.org/)进行身份验证。
我对以下护照会话功能感到困惑:
passport.serializeUser(function( user, done ) {
done( null, user.id );
});
passport.deserializeUser(function( id, done ) {
user.get( id, function ( err, user ) {
done( err, user );
});
});
我在想:
1)每个需要身份验证的请求都调用这些吗?或者它们只是在第一次创建会话时调用一次?
2)我如何从脚本的其他部分访问"user"中的信息?
3)对于需要进行身份验证的请求,我在哪里放置任何附加逻辑?检查是否未达到允许的用户空闲时间值。
(提前)感谢您的帮助
1)在为用户创建会话时调用serializeUser
(当身份验证成功时)。这用于存储Express会话中用户的某种标识信息(如唯一的用户id)。
deserializeUser
,并从会话中获取标识信息,以某种方式通过数据库查询将其转换回完整的用户记录,也许,但这真的取决于您:除了存储用户id,你还可以在会话中存储整个用户记录,但这取决于用户记录的类型和你使用的会话存储,如果可能的话(例如,使用express.cookieSession
将限制你可以存储在会话中的数据量)。
这是存储整个用户记录的样子:
passport.serializeUser(function(user, done) {
// Here, 'user' is the result of the function called by 'new LocalStrategy()'; when
// you call done() below, that result will be stored in the session.
done(null, user);
});
passport.deserializeUser(function(user, done) {
// Here, 'user' is what's stored in the session by serializeUser()
done(null, user);
});
2)护照填充req.user
,您可以在路由或中间件中使用。
3)您可以制作一个中间件来实现这样的检查。
相关文章:
- Sencha Touch和远程服务器上的身份验证
- Javascript清除缓存以清除基本身份验证凭据
- REST的面向公众的身份验证机制
- 当需要身份验证时,ui路由器不会重定向
- 使用Facebook登录,但仍然可以获得:“;此标识池不支持未经身份验证的访问“;
- AJAX HTTP基本身份验证解决方案
- javascript api,用于在第三方域上存储身份验证令牌
- 安全地实现用于Facebook身份验证的Javascript SDK
- 如何使用 window.open 创建一个不确定延迟的弹出窗口(用于社交身份验证),而弹出窗口阻止程序会阻止它
- 适用于 Javascript 函数的应用程序范围的身份验证处理程序
- 是否建议将 angularjs 用于基于身份验证的大规模应用程序
- o身份验证 2 用于授权和自动登录
- 在AngularJS中,在控制器之间共享数据,并添加用于身份验证的回调行为
- 使用您网站的摘要's用于CSRF的身份验证cookie
- 在Node JS中用于身份验证的护照
- 对 php 服务的经过身份验证的 AJAX 请求(适用于 Wordpress)
- 我正在使用 auth0 进行用户身份验证,并且我有一个用于 CRUD 帖子(标题、图像、描述)的 API.如何对 CRU
- 适用于 Angular.js 应用程序的身份验证 API
- d3.json()支持身份验证吗?如果没有,还有哪些其他JavaScript选项可用于JSON检索
- HTTP基本身份验证适用于jQueryPOST请求,但不适用于Angular