angularjs - 使用 MEAN + Passport 根据用户角色更改 View

标签 angularjs node.js authentication mongoose passport.js

我正在使用 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/

相关文章:

php - 如何在 zf2 中使用户名不区分大小写

angularjs - 降级 Angular 2 服务时无法读取 null 的属性 'injector'

javascript - 使用 jasmine 测试路由时 Angular 为空 $state 名称

angularjs - Angular ng 级 : how to use Fuction and conditional expression together?

javascript - 相应地添加/删除 Mongoose 中的元素

java - 服务端如何返回 JWT token 给客户端?

javascript - 从 $http 服务返回选项列表时,ng-option 不起作用

node.js - `app.get("/", func1, func2);` 与 `app.get("/", func1); app.get("/", func2);` 相同吗?

javascript - 确定谁点击了电子邮件中的链接

ruby-on-rails - 使用 LDAP 进行 Rails 身份验证