在节点JS中进行authentication的护照
我正在考虑使用Passport Library( http://passportjs.org/ )在Node项目中进行身份validation。
我对以下护照会话function感到困惑:
passport.serializeUser(function( user, done ) { done( null, user.id ); }); passport.deserializeUser(function( id, done ) { user.get( id, function ( err, user ) { done( err, user ); }); });
我想知道:
1)这些请求是否需要进行身份validation? 或者当会话第一次被创build时,他们只被调用一次?
2)如何从我的脚本的其他部分访问“用户”中的信息?
3)对于需要authentication的请求,我在哪里添加任何额外的逻辑。 例如检查是否还没有达到允许的用户空闲时间值。
在此先感谢您的帮助
1)在为用户创build会话时(当validation成功时),调用serializeUser
。 这用于在Express会话中存储关于用户的某种标识信息(如唯一的用户标识)。
deserializeUser
被调用每个请求,并从会话中获取该片段的标识信息,以某种方式通过数据库查询将其转换为完整的用户logging,但这真的取决于您:而不是仅存储用户标识您也可以将整个用户logging存储在会话中,但是这取决于用户logging的types和所使用的会话存储(如果可能的话)(例如,使用express.cookieSession
会限制可以存储的数据量一个会话)。
这就是存储整个用户logging的样子:
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)你可以做一个中间件来执行这样的检查。 这可能是一个很好的起点。