Sails会话未保存在浏览器

时间:2017-06-17 15:38:13

标签: node.js session sails.js

我有一个带有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,从未见过这个。如果您需要有关环境的更多详细信息,请询问,我会提供。

1 个答案:

答案 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);
        });
    });
}