如何选择性地禁用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 += '×tamp=' + timestamp;
requestOptions.data = data;
}
});
答
您应该检查session.get( 'isAuthenticated')的授权,如果这是真的只有授权的请求。这样它就不会授权初始登录请求。