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

 台湾菜文 发布于 2022-12-09 14:11

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

但是,当我解除我的风帆应用程序时,身份验证无效.我可以访问控制器,即使我没有登录(它没有重定向到我的登录页面).

console.logapi/policies/passport.js下面添加了一个声明:

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(); 
    });
  });
};

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

我正在使用本地身份验证策略,我已经注释掉了所有其他(twitter,facebook ...)

2 个回答
  • 以上答案提供了有用的信息.我想详细说明一下.

    sails-generate-auth,默认情况下,如果用户未登录,则不会拒绝访问控制器.为此,您可以在其中创建另一个策略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']
    }
    

    这有助于限制访问除auth控制器之外的所有控制器,如登录,注销和注册,如果用户未登录.

    2022-12-11 02:07 回答
  • Passport没有拒绝访问控制器的策略.为此,您必须创建另一个策略.

    有关详细信息,请参阅此链接.

    2022-12-11 02:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有