gpt4 book ai didi

javascript - Sails.js Node 服务器 req.session 始终为空,使用 Passport-local 策略。

转载 作者:IT老高 更新时间:2023-10-28 23:06:32 26 4
gpt4 key购买 nike

http://localhost:4200 上运行 ember 应用。
Sails 应用程序在 http://localhost:1337 上运行。

我在注册前调查中设置了政策。所以在 /api/controllers/ProcessSurveyController.js 的风 sails 方面我有这个:

module.exports = {

process_survey: function(req, res){
if(req.body === {} || req.body === null){
res.status(400);
return res.send({err: "something bad happened"});
}
var params = req.body;
req.session.user = {};
if(params.p_1 === '1' && params.p_2 === '1' && params.p_3 === '0' && params.p_4 !== "Bad Param"){
req.session.user.qualifies = true;
res.status(200);
return res.send({message: 'user qualifies', status: 'good'});
}else{
req.session.user.qualifies= false;
res.status(200);
return res.send({message: "user fails to qualify", status: "bad"});
}
}
};

然后我在 api/policies/Qualifies.js

中有这个政策
module.exports= function(req, res, next){
if(req.session.user.qualifies){
return next();
}else{
res.status(400);
return res.send({status: 400, message: 'User does not qualify.'});
}
};

我适用于我的 api/UserController.js

唯一的问题是,每当我从 Ember 发布到我的 UserController.create 方法时,我都会从该策略中收到一个错误,说 cannot read property qualifies of undefined.

如果我 sails.log.verbose(req.session) 在这一点上它总是空的。不管我做什么。

我在我的服务器上启用了 cors,我的 /config/cors.js 有以下选项:

module.exports.cors = {
allRoutes: true,

origin: 'http://localhost:4200',

credentials: true,

methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD',

headers: 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'
};

在我的 ember 适配器中,我有这个:

export default DS.RESTAdapter.extend({
host: 'http://localhost:1337',
ajax: function(url, method, hash){
hash.crossDomain = true;
hash.xhrFields = {withCredentials: true};
return this._super(url, method, hash);
}
});

很明显,我错过了一些重要的东西,但我只是不知道是什么,而且我已经用完了谷歌查询的想法。为什么我的 req.session 总是空的?

编辑:这些是在评论中要求的:

/config/http.js的内容:

module.exports.http = {
middleware: {
passportInit: require('passport').initialize(),
passportSession: require('passport').session(),

order: [
'startRequestTimer',
'cookieParser',
'session',
'passportInit',
'passportSession',
'myRequestLogger',
'bodyParser',
'handleBodyParserError',
'compress',
'methodOverride',
'poweredBy',
'$custom',
'router',
'www',
'favicon',
'404',
'500'
]
}

还有/config/session.js

module.exports.session = {
secret: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA',

cookie: {
maxAge: 48 * 60 * 60 * 1000
}
}

最佳答案

我怀疑这仍然是一个问题,因为它太旧了,但是在我的 ExpressJS 应用程序中,有时我使用 express-session (https://github.com/expressjs/session) 并且必须显式调用 req.session.save(callback) 以便 session 保存回我正在使用的商店。如果 Passport 的 session 支持中存在等效项,您可以在更新 session 中的值后尝试显式调用它。

关于javascript - Sails.js Node 服务器 req.session 始终为空,使用 Passport-local 策略。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31325960/

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