【发布时间】:2015-02-12 14:51:07
【问题描述】:
问题:未经授权的请求不会使会话无效并转换到根 url。默认方法不起作用,所以我要覆盖它。
我的自定义授权人
var CustomAuthorizer = Base.extend({
authorize: function(jqXHR, requestOptions) {
if (this.get('session.isAuthenticated') && !Ember.isEmpty(this.get('session.token'))) {
jqXHR.setRequestHeader('ApiKey', this.get('session.token'));
}
}
});
授权失败钩子
authorizationFailed: function(session){
console.log('authorizationFailed'); //displays in console
this.get('session').invalidate('authenticator:custom', {}); //doesn't invalidate
console.log(this.get('session')); //still return authenticated session
this.transitionTo('index'); //doesn't transition
}
我知道问题在于失效是异步的,因此失效的承诺不会及时返回,以便 console.log 吐出失效的会话。有没有其他方法可以做到这一点?
【问题讨论】:
-
Session#invalidate确实期望根据 API docs 的任何参数。 -
试过
this.get('session').invalidate();,但结果还是一样。
标签: session ember.js authorization ember-simple-auth