【发布时间】:2017-09-17 11:23:26
【问题描述】:
我正在使用Sean.js 开展一个项目,最近我尝试添加一个中间件来保护我的 api 路由。我使用 server.policy.js 遵循“文章”示例,当我尝试使用 req.user 变量时,它说未定义。我开始调查这个问题,它与passport.js有关。我在这方面工作的时间不超过 2 个月,而且我对这一切都不是很熟悉。
user.server.config.js 是 Serelize 和 Deserialize 会话的位置:
module.exports = function(app, db) {
// Serialize sessions
passport.serializeUser(function(user, done) {
var userData = {
id: user.id,
firstName: user.firstName,
lastName: user.lastName,
displayName: user.displayName,
username: user.username,
email: user.email,
profileImageURL: user.profileImageURL,
roles: user.roles,
additionalProvidersData: user.additionalProvidersData
};
done(null, userData);
});
// Deserialize sessions
passport.deserializeUser(function(user, done) {
done(null, user);
});
// Initialize strategies
config.utils.getGlobbedPaths(path.join(__dirname, './strategies/**/*.js')).forEach(function(strategy) {
require(path.resolve(strategy))(config);
});
// Add passport's middleware
app.use(passport.initialize());
app.use(passport.session());
};
这是问题所在还是应该修改其他内容?我相信这与此有关,因为我也有一个问题,即当我重新加载会话结束时,我必须重新登录。
【问题讨论】:
-
SEAN.JS 使用 Redis 存储会话。您是否安装并运行了 Redis?
-
是的,我后来发现我必须在后台运行 Redis,这样的菜鸟情况。但从好的方面来说,我学到了很多关于 passport.js 和 node.js 上的会话的工作原理
标签: node.js authentication serialization passport.js sequelize.js