[英]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.