我目前正在开发Ember 2.4.x应用程序,我正在使用ember-simple-auth
自定义身份验证器和自定义授权程序。
成功验证后,服务器会响应一个json正文,其中包含有关当前用户的信息以及响应标题中的cookie:
Response Headers:
Set-Cookie:Authorization=1s39gpzqy4d0w1quxekavz6yj1;Path=/
现在,对于每个连续的请求,我唯一需要的是发送回相同的cookie。
我理解,使用ember-simple-auth
,我可以使用block
回调来在自定义授权器中设置其他标头。但是,我无法找到一种方法来为每个请求重新发送完全相同的cookie。
此外,我想知道我是否需要授权人,因为我没有设置任何标题,服务器只关心该cookie。
答案 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会出错。