2017-06-17 37 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); 
     }); 
    }); 
} 
相關問題