2017-06-17 107 views
0

我有一个作为api端点的Sails(0.12.13,节点v7.2.0)的启动项目。我有一个包含2个动作很简单UserController中:没有保存在浏览器中的风帆会话

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时,在/autologin之后调用/me无法检索会话,因为控制台显示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); 
     }); 
    }); 
} 

不是第一次我用帆,从来没有看到这一点。如果您需要更多关于环境的详细信息,只需询问并提供给他们。

+0

我遇到类似的问题,不过,我的只发生在Firefox。 – Chibuzo

回答

0

请试试这个。

在每个请求中都加上这个。

withCredentials: true 

角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); 
     }); 
    }); 
}