Sails.js 是否存在sails generate auth的本地策略未将req.session.authenticated设置为true的原因

Sails.js 是否存在sails generate auth的本地策略未将req.session.authenticated设置为true的原因,sails.js,Sails.js,当我使用本地策略登录时,具有sessionAuth策略的后续请求失败,因为req.session.authenticated未定义。我从api/services/protocols/local.js中摘录了login函数的一部分。我已经为我认为缺失的代码插入了注释 passport.validatePassword(password, function (err, res) { if (err) { return next(err); }

当我使用本地策略登录时,具有
sessionAuth
策略的后续请求失败,因为
req.session.authenticated
未定义。我从
api/services/protocols/local.js
中摘录了
login
函数的一部分。我已经为我认为缺失的代码插入了注释

    passport.validatePassword(password, function (err, res) {
      if (err) {
        return next(err);
      }

      if (!res) {
        req.flash('error', 'Error.Passport.Password.Wrong');
        return next(null, false);
      } else {

        ///// Shouldn't authenticated get set true here?
        ///// req.session.authenticated = true;

        return next(null, user);
      }
    });

根据Alberto Souza的建议,如果您从以下位置更改
sessionAuth.js
,则本地策略有效:

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

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


因此,我的问题的答案似乎是
sessionAuth.js
是默认sails应用程序生成的一部分,而不是在运行
sails generate auth
时创建的,因此您需要手动进行更改,而文档忽略了告诉您这些更改。

我认为新的标记sails-generate-x可能对您有用区分有关自定义sails生成器的问题和一般sailsjs问题。也许有人有足够的rep可以添加它?使用req.isAuthenticated()检查用户是否经过身份验证,并在sessionAuth中更改它policy@AlbertoSouza我的问题更多的是为什么它还没有出现。似乎没有它,本地策略就无法工作,但人们似乎正在成功地使用它。我想我应该在GitHub中将此作为一个问题打开instead@Melvin它是任何需要对用户进行身份验证的HTTP请求。
module.exports = function(req, res, next) {
  if (req.isAuthenticated()) {
    return next();
  }

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