我正在使用 MEAN 堆栈和 PassportJS 设置身份验证方案,以通过 OpenID 提供商对用户进行身份验证。当用户未经过身份验证时,我会显示一个将用户重定向到 OpenID 提供商的链接。身份验证后,我想用“Welcome {user}”等一些文本替换该链接。
目前,我能够执行身份验证并存储返回的标识符,如下所示:
passport.serializeUser(function(user, done) {
done(null, user.identifier);
});
passport.deserializeUser(function(id, done) {
User.findByIdAndUpdate(id, {}, { upsert: true }, function(err, user) {
done(err, user);
});
});
(我是否正确实现了序列化和反序列化函数?)
由此,用户 ID 被存储为 cookie 以及数据库中的 key 。现在,在我的客户端代码中,根据用户是否已通过身份验证更改 View (登录 -> 欢迎文本)的最佳方法是什么?
最佳答案
您可以使用以下方式检查用户是否在服务器端进行了身份验证
req.isAuthenticated()
在服务器端代码中调用此值,并将结果传递到您的 View 或以某种其他方式传递到客户端代码,如果需要,可以对服务器进行单独的 ajax 调用。这来自 PassportJS
在这个答案中发现: Documentation for "ensureAuthentication" "isAuthenticated" passport's functions?
关于angularjs - 使用 MEAN + Passport 根据用户角色更改 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21170146/