在节点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)你可以做一个中间件来执行这样的检查。 这可能是一个很好的起点。