Ember 路由检查授权的正确挂钩是什么?
What is the correct hook for Ember Route to check authorization?
在 Ember.js 应用程序中,您可以使用各种挂钩来检查授权。路由上有 beforeModel、willTransition、redirect 钩子。同样的事件也适用于路由器。
我正在为一个项目开发授权基础设施。所有路线都是由开发人员编写的。但是抽象路由(由所有路由扩展)是我的代码。
- 如果我在抽象路由中实现 beforeModal 或 redirect 钩子,当开发人员编写自己的 beforeModal 方法时,我的钩子将被覆盖。
- 如果我实现 willTransition,检查代码将放置在开始转换的路由上。 From the guide,好像willTransition在离开路由的时候适用
- 这样处理路由器的事件是否正确?
那么检查授权和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);
使用beforeModel
。 Example 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,因为它完全符合您的要求。
在 Ember.js 应用程序中,您可以使用各种挂钩来检查授权。路由上有 beforeModel、willTransition、redirect 钩子。同样的事件也适用于路由器。
我正在为一个项目开发授权基础设施。所有路线都是由开发人员编写的。但是抽象路由(由所有路由扩展)是我的代码。
- 如果我在抽象路由中实现 beforeModal 或 redirect 钩子,当开发人员编写自己的 beforeModal 方法时,我的钩子将被覆盖。
- 如果我实现 willTransition,检查代码将放置在开始转换的路由上。 From the guide,好像willTransition在离开路由的时候适用
- 这样处理路由器的事件是否正确?
那么检查授权和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);
使用beforeModel
。 Example 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,因为它完全符合您的要求。