Ember Route检查授权的正确钩子是什么?

时间:2016-03-30 12:37:53

标签: ember.js ember-router

在Ember.js应用程序中,您可以使用各种钩子来检查授权。在路线上有 beforeModel willTransition 重定向挂钩。同样的事件也适用于路由器。

我正在为项目开发授权基础架构。所有路线都是由开发人员编写的。但是抽象路由(由所有路由扩展)是我的代码。

  1. 如果我在抽象路由中实现 beforeModal 重定向挂钩,那么当开发人员编写自己的beforeModal方法时,我的钩子将被覆盖。
  2. 如果我实现 willTransition ,检查代码将放在开始转换的路径上。 From the guide,似乎willTransition在离开路线时适用。
  3. 这是处理路由器事件的正确方法吗?
  4. 那么检查授权和中止/阻止转换的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

有一个很好的授权插件,ember-simple-auth,无需重新发明轮子。

如果您坚持开发自己的解决方案,则需要:1)修改适用于ember数据的适配器(在所有查询中包含auth头)2)在应用程序路由上实现错误处理(句柄401错误)3)(可选)为路由创建mixin以检查客户端的授权。我猜,beforeModel是这个检查的好地方。如果开发人员需要实现他们自己的beforeModel钩子,他们只需要将这一行放在开头:this._super(...arguments);

答案 1 :(得分:1)

使用beforeModelExample from ember-simple-auth

beforeModel(transition) {
  if (!this.get('session.isAuthenticated')) {
    transition.abort();
    this.transitionTo(Configuration.authenticationRoute);
  } else {
    return this._super(...arguments);
  }
}

正如Gennady建议的那样,你应该研究一下ember-simple-auth,因为它完全符合你的要求。