【问题标题】:Ember Simple Auth - authorizationFailed not executing session invalidation or transitionToEmber 简单身份验证 - 授权失败,未执行会话失效或 transitionTo
【发布时间】: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


【解决方案1】:

invalidate 返回一个承诺,您应该等待该承诺完成后再进行转换。

this.get('session').invalidate('authenticator:custom', {}).then(function() {
  this.transitionTo('index');
});

【讨论】:

  • 我也试过了,还是不行。我在then 之后注销了会话,但它仍然返回经过身份验证的会话
猜你喜欢
  • 1970-01-01
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 2018-11-11
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
相关资源
最近更新 更多