gpt4 book ai didi

node.js - Passport 身份验证在sails.js 应用程序中不起作用

转载 作者:IT老高 更新时间:2023-10-28 23:19:04 24 4
gpt4 key购买 nike

我有一个 Sails JS 应用程序。我正在尝试使用 Passport.js 身份验证层设置身份验证 sails-generate-auth .我已经按照他们文档中给出的步骤配置了我的应用程序。

但是当我启动我的风 sails 应用程序时,身份验证不起作用。我可以访问 Controller ,即使我没有登录(它不会重定向到我的登录页面)。

我在api/policies/passport.js中添加了一个console.log语句,如下:

module.exports = function (req, res, next) {
passport.initialize()(req, res, function () {
passport.session()(req, res, function () {
res.locals.user = req.user;
console.log(req.user); // added by me
next();
});
});
};

现在,当我在登录前或注销后访问 Controller 时,它会打印 undefined。但是当我登录时,它会打印我的用户数据。知道为什么它不检查身份验证吗?

我正在使用本地身份验证策略,并且已注释掉所有其他策略(推特、 Facebook ...)

最佳答案

以上答案提供了有用的信息。我想详细说明一下。

sails-generate-auth,默认情况下,如果用户未登录,则不会拒绝对 Controller 的访问。为此,您可以在 api/policies/ 中创建另一个策略。例如:创建sessionAuth策略如下:

module.exports = function(req, res, next) {
if (req.user) {
return next();
}

return res.forbidden('You are not permitted to perform this action.');
};

除了显示禁止页面,您还可以渲染登录页面。为此,您需要访问 AuthController.login。因此,在 config/policies 中添加策略如下:

'*': ['passport', 'sessionAuth'],

'auth': {
'*': ['passport']
}

如果用户未登录,这有助于限制除身份验证 Controller (例如登录、注销和注册)之外的所有 Controller 的访问。

关于node.js - Passport 身份验证在sails.js 应用程序中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27168229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com