【发布时间】:2026-02-08 16:35:01
【问题描述】:
我正在使用活动目录来验证用户,所以我认为我不需要使用 Passport,我需要做的就是在密码签出后创建一个带 res 的全局(?)布尔值。 locals 表示用户已通过身份验证。
我在控制器功能中尝试过这样的事情:
ad.authenticate(username,password, function(err,auth) {
//some of the things I tried unsuccessfully -- should be true after logged in
res.locals.auth = auth
app.locals.auth = auth //app not defined
})
但是,我发现当我调用稍后的函数检查用户是否作为 diff 路由的中间件的一部分登录时,res.locals.auth 和 app.locals.auth 要么是假的,要么是未定义的。我尝试使用下面的代码在我的 server.js 文件中设置这两个变量,但这也不起作用......
app.use((req, res, next) => {
app.locals.auth = false;
res.locals.auth = false;
next();
});
所以我的问题是,我应该在哪里保存经过身份验证的状态?或者我应该只使用护照,因为有一些我不知道的安全问题?护照设置示例中的 isMemberOf 有什么意义?
https://www.npmjs.com/package/passport-activedirectory
我要做的只是检查用户凭据并基本上在 Passport 中重新创建 req.isAuthenticated,因为由于 isMemberOf,我无法弄清楚如何使用它。
【问题讨论】:
-
您是否希望在请求之后记住登录状态? FWIW
res.locals不会创建全局任何东西,这些是在当前请求的生命周期内存在的临时变量。 -
@James 如果我理解正确,是的。因此,我正在阅读 res.locals ,因此它似乎不是解决方案,但它不断出现在示例中,我也不认为 app.locals 是解决方案,因为它是全球性的/每个人都可以看到它?此外,当我在下一个函数中引用 req.locals 和 app.locals 以检查它们是否已登录时,它也一直以未定义的形式返回,所以我不知道在哪里存储状态...
-
Cookie-session 是关键。
标签: node.js express authentication passport.js