node.js - Passport js反序列化黑名单错误
问题描述
我正在将 Nodejs 与 passport.js 一起使用。一旦我在我的服务器上运行localhost:3000
,我就一直在
错误:无法将用户反序列化出会话
我在这个Github 线程上找到了解决方案。
passport.deserializeUser(function(obj, done) {
done(null, false); // invalidates the existing login session.
});
从线程:
就目前的情况而言,一旦您遇到反序列化错误,您基本上就会被列入黑名单
这可能是我对会话的理解不足,但即使我重新启动服务器,我也会不断收到上述错误。我在哪里被列入黑名单?重新启动服务器不应该清除所有服务器会话吗?
解决方案
你应该这样做
passport.serializeUser(function (user, done) {
// this user is from your passport strategy
// for example: https://github.com/jaredhanson/passport-local#user-content-configure-strategy
// the data you give will store into session
done(null, user._id);
});
passport.deserializeUser(function (id, done) {
// the id is from session which store by serializeUser function
// this function should varify user and return its data to passport
// when passport jobs done
// you can access user data from req.user in express; ctx.state.user in koa
1User.findById(id, function (err, user) {
done(err, user); // if user is null, will block user
});
});
推荐阅读
- mysql - 使用来自多个表的记录的 MYSQL 查询
- reactjs - 春季启动时出现Cors错误,将其与反应连接并尝试部署在tomcat或jboss服务器上?
- javascript - 如何在styles.js中更改禁用按钮的颜色
- c# - 没有键为“Conve”的“IEnumerable”类型的 ViewData 项
- django - django 媒体图片网址未显示
- python - 怎么做船拍?
- okta - Okta 小部件和 MFA 的部分登录问题
- python - Python:如何使用 Matplotlib 将文本垂直放置在条形图中
- c - C、wait()返回什么进程?
- python-3.x - 无法从歌词提取器导入 SongLyrics