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.');
};