目前我正在将ng-token-auth
实施到我的Angular应用程序中,虽然效果很好,但我在限制对某些页面的访问方面遇到了一些麻烦。
在我的一些路线中,我有几个额外的参数:
data: {
title: 'Dashboard',
restricted: true, // Only allow logged in users
role: 2 // Only allow a specific role
}
我正在检查$stateChangeStart
中的登录,所以在切换路由之前,我可以检查用户是否被允许进入该路由。
我遵循ng-token-auth
有关使用父路线的建议,并决定是否登录用户:
resolve: {
auth: function($auth) {
console.log('validate user');
return $auth.validateUser();
}
}
现在问题出现在我第一次加载应用程序时,显然$stateChangeStart
事件在$auth.validateUser()
解析之前被触发,因为$stateChangeStart
内的登录失败了用户被重定向到登录页面。
实现这个"权限逻辑"的更好方法是什么?我不希望每条路由都这样做,因为这会增加许多额外的工作和代码。
在$stateChangeStart
中执行此操作似乎也不是最好的选择,因为它不适用于首次加载。
答案 0 :(得分:1)
我会将Authentication
和Authorization
视为两件不同的事情。
ng-token-auth
可以帮助您进行身份验证。它甚至可以帮助您选择哪些路由必须可用于经过身份验证的用户请参阅example-using-angular-ui-router
role: 2 // Only allow a specific role
似乎更多的授权和权限。为此你可能想采取不同的方法。一种这样的方法。我们采取了类似的方法 - 我们还确保了一些授权是预先获得的。