我正在编写一个基于mean.js样板的应用程序
在我的服务器代码(快递)中,我需要做出一些基于知道登录用户是谁的决定
我已实施护照本地帐户。
如何在服务器代码中确定当前登录用户的身份?
答案 0 :(得分:2)
如果用户已登录,passport.js将为每个请求创建一个用户对象。它将用户设置为请求中的属性(req.user
)。您可以通过该对象访问用户的任何属性。例如:req.user.username
,req.user.email
等。
答案 1 :(得分:2)
如果您使用的是护照,则只需访问已提及的req.user
。
看看你的要点,我的猜测是你的某些路线的定义要早于app.use(passport.initialize());
和app.use(passport.session());
,这意味着如果你收到get /opportunity_ids
的请求(例如),req.user
尚未填充。
如果你在堆栈中再往前走一点,你会注意到在护照在行中初始化后注入所有其他路线:
// Globbing routing files
config.getGlobbedFiles('./app/routes/**/*.js').forEach(function(routePath) {
require(path.resolve(routePath))(app);
});
解决方案是在./app/routes/**/
之前将所有自定义路由定义在护照初始化之前,并让路径文件自动进行全局处理。 req.user
不会被定义。
每个中间件的放置顺序非常重要,如果更改了该顺序,可能会产生意外行为。