使用MEAN +护照更改基于用户angular色的视图

我正在使用MEAN堆栈和PassportJS设置一个authenticationscheme,通过一个OpenID提供者来authentication一个用户。 当用户未通过身份validation时,我会显示一个将用户redirect到OpenID提供程序的链接。 validation后,我想用“Welcome {user}”的行代替链接。

目前,我能够执行身份validation并存储返回的标识符,如下所示:

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); }); }); 

(我是否正确地执行序列化和反序列化函数?)

由此,用户标识被存储为一个cookie,也被作为数据库中的一个键。 现在在我的客户端代码中,根据用户是否经过身份validation,更改视图(login – >欢迎文本)的最佳方式是什么?

您可以使用检查用户是否在服务器端进行身份validation

 req.isAuthenticated() 

在您的服务器端代码中调用这个值,并以其他方式将结果传递给您的视图或客户端代码,如有必要,单独调用服务器的Ajax。 这来自PassportJS

在这个答案中find: 文件的“ensureAuthentication”“isAuthenticated”护照的function?

您的seriliazeUserseriliazeUser函数看起来没问题。

据我记得,有一些平均值的代码在用户身份validation后设置了window.user ,并且在angular度方面也有一个Global服务,它使用这些信息来设置authenticated值。 你可以使用这些信息来改变你的观点。

看看头控制器代码。

https://github.com/linnovate/mean/blob/master/public/js/controllers/header.js