在Ember.js应用程序中,您可以使用各种钩子来检查授权。在路线上有 beforeModel , willTransition ,重定向挂钩。同样的事件也适用于路由器。
我正在为项目开发授权基础架构。所有路线都是由开发人员编写的。但是抽象路由(由所有路由扩展)是我的代码。
那么检查授权和中止/阻止转换的正确方法是什么?
答案 0 :(得分:1)
有一个很好的授权插件,ember-simple-auth,无需重新发明轮子。
如果您坚持开发自己的解决方案,则需要:1)修改适用于ember数据的适配器(在所有查询中包含auth头)2)在应用程序路由上实现错误处理(句柄401错误)3)(可选)为路由创建mixin以检查客户端的授权。我猜,beforeModel是这个检查的好地方。如果开发人员需要实现他们自己的beforeModel钩子,他们只需要将这一行放在开头:this._super(...arguments);
答案 1 :(得分:1)
使用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,因为它完全符合你的要求。