标签:javascript node-js passport-js
我正在考虑使用Passport Library(http://passportjs.org/)在Node项目中进行身份验证.
我对以下护照会话功能感到困惑:
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)如何从脚本的其他部分访问“用户”中的信息?
3)对于需要进行身份验证的请求,我在哪里添加任何其他逻辑.例如,检查是否尚未达到允许的用户空闲时间值.
在此先感谢您的帮助
解决方法:
1)在为用户创建会话时(在验证成功时)调用serializeUser.这用于在Express会话中存储关于用户的某种标识信息(如唯一的用户标识).
为每个请求调用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)Passport填充req.user,您可以在路由或中间件中使用它.
3)你可以制作一个中间件来实现这样的检查. This可能是一个很好的起点.
标签:javascript,node-js,passport-js 来源: https://codeday.me/bug/20190629/1328373.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。