【发布时间】:2015-04-16 14:27:11
【问题描述】:
我正在构建一个带有sails.js 后端的角度应用程序。我已将此 JWT 身份验证合并到应用程序中。
https://github.com/Foxandxss/sails-angular-jwt-example
我仍在探索身份验证的工作原理,目前正在尝试弄清楚如何添加多个授权级别。 它预先构建了 0 和 1,我想在此之上添加一个管理员级别。
它处理现有的授权级别如下: 每个路由都通过一个常量分配一个授权级别。所以所有用户路由都会在 state 中的 data 属性上获得这个访问属性:
$stateProvider
.state('user', {
abstract: true,
template: '<ui-view/>',
data: {
access: AccessLevels.user
}
})
AccessLevels.user 是从一个常量键值对中提取的:
angular.module('app')
.constant('AccessLevels', {
anon: 0,
user: 1
});
每当导航到某个路由时,它都会检查 data.access 属性以查看该特定路由的访问级别。如果它作为需要身份验证的路由返回,它会检查 localStorage 是否有令牌。如果有令牌,则路由继续,否则引导您。
这是在 stateChangeStart 上调用的函数:
authorize: function(access) { //<- 'access' will be whatever is in the data property for that state
if (access === AccessLevels.user) {
return this.isAuthenticated(); // <- this just grabs the token
} else {
return true;
}
}
那么添加额外图层的最简单方法是什么?
我显然需要将 auth_level 值放入用户模型中。但是然后呢?添加此功能并保持现有身份验证完整性的最佳方法是什么(我担心安全性)?
【问题讨论】: