jquery - 如何有选择地禁用 ember-simple-auth 授权者?

标签 jquery authentication ember.js ember-simple-auth

我正在实现一个自定义授权方和身份验证方,以使用 ember-simple-auth 库执行 HMAC token 签名,每个部分单独工作时效果很好,但在一起时会出现问题。

如果我禁用授权者,验证者可以正常启动 session ,并且一旦存在现有 session ,授权者就会正确授权对 api 的所有请求,但是当两者都在运行时,授权者会破坏初始登录请求。

有没有办法跳过身份验证请求的授权者,或者暂时禁用正在修改请求的ajaxPrefilter?或者有更好的方法来解决这个问题吗?

验证器:

var CustomAuthenticator = Base.extend({
  authenticate: function(credentials) {
    var data = {
      user: {
        email: credentials.identification,
        password: credentials.password
      }
    };

  return Ember.$.post(MyApplicationENV.API_URL + '/users/login', data).then(function(response, statusText, xhr) {
    if (xhr.status === 201) {
      return response;
    }
  }).fail(function() {
    console.warn('login FAILED!');
  });
},...

授权人:

var CustomAuthorizer = Base.extend({
  authorize: function(jqXHR, requestOptions) {
    var timestamp = parseInt((new Date().getTime() / 1000), 10);
    var hashedToken = window.md5(timestamp + ':' + this.get('session.authentication_token'));
    var data = 'user_token=' + hashedToken;
    data += '&user_email=' + this.get('session.email');
    data += '&timestamp=' + timestamp;
    requestOptions.data = data;
  }
});

最佳答案

您应该在授权者中检查 session.get('isAuthenticated') ,并且仅在为真时才授权该请求。这样它就不会授权初始登录请求。

关于jquery - 如何有选择地禁用 ember-simple-auth 授权者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25690940/

相关文章:

javascript - ng-repeat 基于下拉选择或搜索输入

authentication - IdentityServer4 client_id 特定的登录页面

dom - 我如何在单击 ember 中的按钮时动态添加输入选择元素

javascript - 使用 jQuery 用随机数组元素填充 20 个文本框

jquery - 例如在<a>标签内添加<span> + </span>标签

MySQL - 如何加密密码

python - 使用 Mechanize 进行 Python 抓取脚本的 HTTP 错误 401

javascript - Ember.js 中的 Google map

rest - 特定模型的自定义 REST url

javascript - jquery 1.4.4 检查复选框如果检查每次都返回 true