我有一个带有Sails(0.12.13,节点v7.2.0)的启动项目作为api端点。我有一个非常简单的UserController包含2个动作:
me: function(req, res)
{
console.log(req.session.authenticated,req.session.userId);
},
autologin: function(req, res)
{
req.session.authenticated = true;
req.session.userId = 18;
return res.ok('login_ok');
}
这是我的路线配置文件
'GET /me': 'UserController.me',
'PUT /autologin': 'UserController.autologin'
当我使用邮递员拨打/autologin
然后/me
时,一切正常。另一方面,当我在前端使用jquery执行相同操作时,/me
之后的/autologin
调用无法检索会话,因为控制台显示undefined undefined
,如果会话不是保存。
前端代码示例:
loginInSails: function(code)
{
$.ajax({
type: 'PUT',
url: sailsServerUrl + '/autologin'
})
.fail(function(a)
{
console.log(a);
})
.done(function(d)
{
$.ajax({
type: 'GET',
url: sailsServerUrl + '/me'
})
.fail(function(a)
{
console.log(a);
})
.done(function(d)
{
console.log(d);
});
});
}
不是我第一次使用Sails,从未见过这个。如果您需要有关环境的更多详细信息,请询问,我会提供。
答案 0 :(得分:0)
请试一试。
在每个请求中添加此内容。
withCredentials: true
Angular 1:
$http({
url: serviceURL,
method: method,
withCredentials: true,
params: q
})
Jquery的:
xhrFields: {
withCredentials: true
}
loginInSails: function(code)
{
$.ajax({
type: 'PUT',
url: sailsServerUrl + '/autologin',
xhrFields: {
withCredentials: true
}
})
.fail(function(a)
{
console.log(a);
})
.done(function(d)
{
$.ajax({
type: 'GET',
url: sailsServerUrl + '/me',
xhrFields: {
withCredentials: true
}
})
.fail(function(a)
{
console.log(a);
})
.done(function(d)
{
console.log(d);
});
});
}