如何选择性地禁用ember-simple-auth授权人?

问题描述:

我正在实现一个自定义授权者和身份验证器,以使用ember-simple-auth库执行HMAC令牌签名,并且每个作品单独运行良好,但一起破解。如何选择性地禁用ember-simple-auth授权人?

如果我禁用授权者,认证者可以启动会话就好了,一旦有现有会话,授权者就会正确授权所有对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')的授权,如果这是真的只有授权的请求。这样它就不会授权初始登录请求。