如何确定平均堆栈应用程序中的登录用户

时间:2015-06-14 14:45:03

标签: node.js express mean-stack meanjs

我正在编写一个基于mean.js样板的应用程序

在我的服务器代码(快递)中,我需要做出一些基于知道登录用户是谁的决定

我已实施护照本地帐户。

如何在服务器代码中确定当前登录用户的身份?

2 个答案:

答案 0 :(得分:2)

如果用户已登录,passport.js将为每个请求创建一个用户对象。它将用户设置为请求中的属性(req.user)。您可以通过该对象访问用户的任何属性。例如:req.user.usernamereq.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不会被定义。

每个中间件的放置顺序非常重要,如果更改了该顺序,可能会产生意外行为。