繁体   English   中英

Ember简单的auth和cookie标头

[英]Ember simple auth and cookie headers

我目前正在使用Ember 2.4.x应用程序,并且正在将ember-simple-auth与自定义身份验证器和自定义授权者结合使用。

身份验证成功后,服务器将以json主体进行响应,该主体包含有关当前用户的信息以及响应头中的cookie:

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

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

我也想知道我是否根本不需要授权者,因为我没有设置任何标题,服务器只在乎那个cookie。

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

我终于设法使它起作用。 基本上,我首先关注该主题的答案

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM