如何开发angularjs拦截器来控制会话
发布时间:2020-12-17 10:23:43 所属栏目:安全 来源:网络整理
导读:我是一名学生,最近在研究angularJS拦截器,并试图开发一个控制会话管理.我是平均堆栈开发的新手,需要帮助. 有没有人有一个angularJS会话管理的工作示例? 非常感谢您的帮助和时间. 如果你想要一个基于令牌的控件,你可以这样做: 你的拦截器: angular.module(
我是一名学生,最近在研究angularJS拦截器,并试图开发一个控制会话管理.我是平均堆栈开发的新手,需要帮助.
有没有人有一个angularJS会话管理的工作示例? 非常感谢您的帮助和时间.
如果你想要一个基于令牌的控件,你可以这样做:
你的拦截器: angular.module('yourApp').factory('YourHttpInterceptor',['$q','$window',function($q,$window) { return { 'request': function(config) { config.headers = config.headers || {}; // If you have a token in local storage for example: if ($window.localStorage.token) { // Add the token to "Authorization" header in every request config.headers.Authorization = 'Bearer ' + $window.localStorage.token; // In your server you can check if the token is valid and if it's not,// in responseError method you can take some action } // Handle something else return config; },// Optional method 'requestError': function(rejection) { // do something on request error if (canRecover(rejection)) { return responSEOrNewPromise } return $q.reject(rejection); },// Optional method 'response': function(response) { // do something on response success return response; },// optional method 'responseError': function(rejection) { // Here you can do something in response error,like handle errors,present error messages etc. if(rejection.status === 401) { // Unauthorized // do something } if (canRecover(rejection)) { return responSEOrNewPromise } return $q.reject(rejection); } }; }]); 并在您的模块配置中注册拦截器: angular.module('yourApp',[]).config(function($httpProvider) { $httpProvider.interceptors.push('YourHttpInterceptor'); } 正如您在this post中看到的,基于令牌的身份验证遵循以下步骤(几乎总是如此): >客户端将其凭据(用户名和密码)发送到服务器.>服务器对它们进行身份验证并生成具有过期日期的令牌.>服务器将先前生成的令牌存储在具有用户标识符的某个存储中,例如数据库或内存中的映射.>服务器将生成的令牌发送到客户端.>在每个请求中,客户端将令牌发送到服务器.>服务器在每个请求中从传入请求中提取令牌,使用令牌查找用户标识符以获取用于执行身份验证/授权的用户信息.>如果令牌过期,服务器会生成另一个令牌并将其发送回客户端. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |