angularjs – Angular中的JWT身份验证 – 多个身份验证级别
我正在构建一个带有sails.js后端的角度应用程序.我已将此JWT身份验证合并到应用程序中.
https://github.com/Foxandxss/sails-angular-jwt-example 我仍然在探究身份验证的确切工作方式,我目前正在尝试弄清楚如何添加多个授权级别. 它处理现有的授权级别,如下所示: $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; } } 那么添加附加层的最简单方法是什么?
您可以使用
private claims来保存服务器授予的授权.私人声明允许您在JWT中放置您想要的任何其他类型的数据.
我从未使用过node-jsonwebtoken(这似乎是sails.js用于JWT的东西),但看起来你可以直接使用JWT有效负载来访问你期望存在的值,所以你可以做类似的事情.这个: // Assign authorization on server after successful authentication of an admin token.auth = AccessLevels.admin; // Read authorization on client authorize: function(access) { if (access === AccessLevels.anon) { return true; } // Assumes the JWT token is returned by isAuthenticated() // (Sorry,not familiar with Sails.js or the JWT example) return this.isAuthenticated().auth === access; } 在身份验证之后,任何后续请求都应该验证用户的授权,可能是通过在您提供的示例中添加类似于“tokenAuth”的添加策略,但是验证提供的JWT上的auth声明与调用任何函数所需的授权相匹配即将被召唤. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |