Ember简单身份验证和cookie标头

时间:2016-03-22 16:18:56

标签: authentication cookies ember.js ember-simple-auth

我目前正在开发Ember 2.4.x应用程序,我正在使用ember-simple-auth自定义身份验证器和自定义授权程序。

成功验证后,服务器会响应一个json正文,其中包含有关当前用户的信息以及响应标题中的cookie:

Response Headers:
  Set-Cookie:Authorization=1s39gpzqy4d0w1quxekavz6yj1;Path=/

现在,对于每个连续的请求,我唯一需要的是发送回相同的cookie。 我理解,使用ember-simple-auth,我可以使用block回调来在自定义授权器中设置其他标头。但是,我无法找到一种方法来为每个请求重新发送完全相同的cookie。

此外,我想知道我是否需要授权人,因为我没有设置任何标题,服务器只关心该cookie。

2 个答案:

答案 0 :(得分:1)

如果您的身份验证服务器发出cookie,您根本不需要授权人,因为浏览器会在每次连续请求时自动发送cookie。

答案 1 :(得分:0)

我终于设法让这个工作了。基本上我首先按照that topic

的答案

然后,在我的自定义身份验证器中,我将重新使用我必须设置makeRequest属性的xhrFields方法:

makeRequest(data, options) {
  let serverTokenEndpoint = get(this, 'serverTokenEndpoint');
  let requestOptions = $.extend({
    url:      serverTokenEndpoint,
    type:     'POST',
    // The contentType must be passed to Jetty as it will default to
    // 'application/x-www-form-urlencoded'
    contentType: 'application/json',
    crossDomain: true,
    dataType: 'json',
    data,
    xhrFields: {
      withCredentials: true
    },

    beforeSend(xhr, settings) {
      xhr.setRequestHeader('Accept', settings.accepts.json);
    }
  }, options || {});

  return $.ajax(requestOptions);
}

我还发现服务器必须在Access-Control-Allow-Credentials:true中设置Response Headers,否则Ember会出错。