【问题标题】:How can ember-simple-auth authorizers be selectively disabled?如何选择性地禁用 ember-simple-auth 授权者?
【发布时间】:2014-09-05 17:18:20
【问题描述】:

我正在实现一个自定义授权器和身份验证器,以使用 ember-simple-auth 库执行 HMAC 令牌签名,并且每个部分都可以单独运行,但可以分开使用。

如果我禁用授权者,验证者可以很好地启动会话,一旦存在会话,授权者会正确授权对 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;
  }
});

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-27
      • 2016-02-02
      • 2016-01-14
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多