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

how to determine logged in user in a mean stack application

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

在我的服务器代码 (express) 中,我需要根据知道登录用户是谁来做出一些决定

我实施了护照本地账户。

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

如果用户已登录,passport.js 将为每个请求创建一个用户对象。它根据请求 (req.user) 将用户设置为 属性。您可以通过该对象访问用户的任何属性。例如:req.user.usernamereq.user.email

如果您使用的是 passport,您只需访问 req.user,正如已经提到的那样。

看看你的要点,我的猜测是你的一些路由定义早于 app.use(passport.initialize());app.use(passport.session());,这意味着如果你收到对 [=14= 的请求](例如),req.user 尚未填充。

如果你在堆栈中走得更远一点,你会注意到所有其他路由都被注入了行中初始化护照后:

// Globbing routing files
config.getGlobbedFiles('./app/routes/**/*.js').forEach(function(routePath) {
    require(path.resolve(routePath))(app);
});

解决方案是将您在通行证初始化之前定义的所有自定义路由放在 ./app/routes/**/ 中,并让路由文件自动通配。 req.user 不会是未定义的。

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