【问题标题】:Ember Simple Auth: How to set/send multiple request headers?Ember Simple Auth:如何设置/发送多个请求标头?
【发布时间】:2016-03-16 01:21:49
【问题描述】:

我花了很多时间试图弄清楚这一点。

我的后端是带有 devise_token_auth 的 Rails 4.x

要在登录后授权请求,我需要为每个请求发送多个标头,如下所示(已验证使用 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 方法中设置多个请求标头。

如果有人知道如何做到这一点并且可以回答问题,我将立即打开一个拉取请求以修复该区域的 Ember Simple Auth 文档。

【问题讨论】:

  • 我也希望这样做。我认为最好的选择是扩展 BaseAuthorizer 并基于 DeviseAuthorizer 的代码制作一个新的 DeviseTokenAuthorizer,但参数更多。

标签: ember-simple-auth


【解决方案1】:

设计授权者将函数作为第二个参数传递给#authorize。


http://ember-simple-auth.com/api/classes/BaseAuthorizer.html#method_authorize

authorize(data, block(headerName,headerContent))

参数

数据:对象 会话当前持有的数据

block(headerName,headerContent): 函数 使用授权数据调用的回调;将接收标头名称和标头内容作为参数


如果您想添加自己的标头,可以创建从设计授权方扩展的授权方类。然后像这样覆盖授权方法:

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

【讨论】:

  • 谢谢!我们中的一个人应该打开一个 PR 将其添加到简单的身份验证文档中。当我阅读文档时,缺少的概念是您可以多次调用“标题”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-31
  • 1970-01-01
相关资源
最近更新 更多