Ember 简单验证:如何set/send 多次请求headers?
Ember Simple Auth: How to set/send multiple request headers?
我花了很多时间来弄清楚这个问题。
我的后端是 Rails 4.x 和 devise_token_auth
为了在登录后授权一个请求,我需要为每个请求发送多个 headers,像这样(使用 curl 验证):
curl -X GET -H "Content-Type: application/vnd.api+json" -H "Access-Token: 33YPWz2Kr4eMimYjblDg7w" -H "Client: godv0EDuuc-2qZ6kvrVLzQ" -H "Token-Type: Bearer" -H "Accept: application/vnd.api+json" -H "Uid: example@gmail.com" -H "Expiry: 1459295877" -H "Provider: Email" "http://localhost:3000/api/v1/forms"
我完全不知道授权 api 是如何工作的。我看不出如何在 DeviseAuthorizer#authorize 方法中设置多个请求 header。
如果有人知道如何做到这一点并且可以回答问题,我将立即打开拉取请求以修复此区域中的 Ember Simple Auth 文档。
设计授权方将函数作为第二个参数传递给#authorize。
http://ember-simple-auth.com/api/classes/BaseAuthorizer.html#method_authorize
authorize(data, block(headerName,headerContent))
参数
数据:Object
session目前持有的数据
块(header名称,header内容):函数
使用授权数据调用的回调;将收到 header 名称和 header 内容作为参数
如果您想添加自己的 header,您可以创建从设计授权人扩展而来的授权人 class。然后像这样覆盖授权方法:
import Ember from 'ember';
import Devise from 'ember-simple-auth/authorizers/devise';
export default Devise.extend({
authorize(data, header) {
this._super(data, header);
header('X-Custom-Header', "The custom 1 header");
header('X-Other-Custom-Header', "The custom 2 header");
}
});
这是有效的,因为在数据适配器 mixin 中,它传递了这个函数:
this.get('session').authorize(authorizer, (headerName, headerValue) => {
xhr.setRequestHeader(headerName, headerValue);
});
我花了很多时间来弄清楚这个问题。
我的后端是 Rails 4.x 和 devise_token_auth
为了在登录后授权一个请求,我需要为每个请求发送多个 headers,像这样(使用 curl 验证):
curl -X GET -H "Content-Type: application/vnd.api+json" -H "Access-Token: 33YPWz2Kr4eMimYjblDg7w" -H "Client: godv0EDuuc-2qZ6kvrVLzQ" -H "Token-Type: Bearer" -H "Accept: application/vnd.api+json" -H "Uid: example@gmail.com" -H "Expiry: 1459295877" -H "Provider: Email" "http://localhost:3000/api/v1/forms"
我完全不知道授权 api 是如何工作的。我看不出如何在 DeviseAuthorizer#authorize 方法中设置多个请求 header。
如果有人知道如何做到这一点并且可以回答问题,我将立即打开拉取请求以修复此区域中的 Ember Simple Auth 文档。
设计授权方将函数作为第二个参数传递给#authorize。
http://ember-simple-auth.com/api/classes/BaseAuthorizer.html#method_authorize
authorize(data, block(headerName,headerContent))
参数
数据:Object session目前持有的数据
块(header名称,header内容):函数 使用授权数据调用的回调;将收到 header 名称和 header 内容作为参数
如果您想添加自己的 header,您可以创建从设计授权人扩展而来的授权人 class。然后像这样覆盖授权方法:
import Ember from 'ember';
import Devise from 'ember-simple-auth/authorizers/devise';
export default Devise.extend({
authorize(data, header) {
this._super(data, header);
header('X-Custom-Header', "The custom 1 header");
header('X-Other-Custom-Header', "The custom 2 header");
}
});
这是有效的,因为在数据适配器 mixin 中,它传递了这个函数:
this.get('session').authorize(authorizer, (headerName, headerValue) => {
xhr.setRequestHeader(headerName, headerValue);
});