如何确定平均堆栈应用程序中的登录用户
how to determine logged in user in a mean stack application
我正在编写基于 mean.js 样板的应用程序
在我的服务器代码 (express) 中,我需要根据知道登录用户是谁来做出一些决定
我实施了护照本地账户。
如何在服务器代码中确定当前登录用户的身份?
如果用户已登录,passport.js 将为每个请求创建一个用户对象。它根据请求 (req.user
) 将用户设置为 属性。您可以通过该对象访问用户的任何属性。例如:req.user.username
、req.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
不会是未定义的。
每个中间件的放置顺序非常重要,如果更改该顺序可能会产生意外行为。
我正在编写基于 mean.js 样板的应用程序
在我的服务器代码 (express) 中,我需要根据知道登录用户是谁来做出一些决定
我实施了护照本地账户。
如何在服务器代码中确定当前登录用户的身份?
如果用户已登录,passport.js 将为每个请求创建一个用户对象。它根据请求 (req.user
) 将用户设置为 属性。您可以通过该对象访问用户的任何属性。例如:req.user.username
、req.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
不会是未定义的。
每个中间件的放置顺序非常重要,如果更改该顺序可能会产生意外行为。