Ember 路由检查授权的正确挂钩是什么?

What is the correct hook for Ember Route to check authorization?

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

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

  1. 如果我在抽象路由中实现 beforeModalredirect 钩子,当开发人员编写自己的 beforeModal 方法时,我的钩子将被覆盖。
  2. 如果我实现 willTransition,检查代码将放置在开始转换的路由上。 From the guide,好像willTransition在离开路由的时候适用
  3. 这样处理路由器的事件是否正确?

那么检查授权和abort/prevent转换的正确方法是什么?

有一个不错的授权插件,ember-simple-auth,不需要re-invent轮子。

如果您坚持开发自己的解决方案,则需要:1) 修改 ember 数据的适配器(在所有查询中包含 auth headers)2) 实施错误处理application route (handle 401 error) 3) (optional) 为路由创建一个mixin来检查客户端的授权。 beforeModel 是进行此检查的好地方,我猜。如果开发者需要实现他们自己的 beforeModel 钩子,他们只需要将这一行放在开头:this._super(...arguments);

使用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,因为它完全符合您的要求。