欢迎您访问我爱IT技术网,今天小编为你分享的javascript教程:【使用AngularJS对路由进行安全性处理的方法】,下面是详细的讲解!
使用AngularJS对路由进行安全性处理的方法
appModule.factory('authorizationService', function ($resource, $q, $rootScope, $location) {
return {
// 将权限缓存到 Session,以避免后续请求不停的访问服务器
permissionModel: { permission: {}, isPermissionLoaded: false },
permissionCheck: function (roleCollection) {
// 返回一个承诺(promise).
var deferred=$q.defer();
// 这里只是在承诺的作用域中保存一个指向上层作用域的指针。
var parentPointer=this;
// 检查是否已从服务获取到权限对象(已登录用户的角色列表)
if (this.permissionModel.isPermissionLoaded) {
// 检查当前用户是否有权限访问当前路由
this.getPermission(this.permissionModel, roleCollection, deferred);
} else {
// 如果还没权限对象,我们会去服务端获取。
// 'api/permissionService' 是本例子中的 web 服务地址。
$resource('/api/permissionService').get().$promise.then(function (response) {
// 当服务器返回之后,我们开始填充权限对象
parentPointer.permissionModel.permission=response;
// 将权限对象处理完成的标记设为 true 并保存在 Session,
// Session 中的用户,在后续的路由请求中可以重用该权限对象
parentPointer.permissionModel.isPermissionLoaded=true;
// 检查当前用户是否有必须角色访问该路由
parentPointer.getPermission(parentPointer.permissionModel, roleCollection, deferred);
}
);
}
return deferred.promise;
},
//方法:检查当前用户是否有必须角色访问该路由
//'permissionModel' 保存了从服务端返回的当前用户的角色信息
//'roleCollection' 保存了可访问当前路由的角色列表
//'deferred' 是用来处理承诺的对象
getPermission: function (permissionModel, roleCollection, deferred) {
var ifPermissionPassed=false;
angular.forEach(roleCollection, function (role) {
switch (role) {
case roles.superUser:
if (permissionModel.permission.isSuperUser) {
ifPermissionPassed=true;
}
break;
case roles.admin:
if (permissionModel.permission.isAdministrator) {
ifPermissionPassed=true;
}
break;
case roles.user:
if (permissionModel.permission.isUser) {
ifPermissionPassed=true;
}
break;
default:
ifPermissionPassed=false;
}
});
if (!ifPermissionPassed) {
// 如果用户没有必须的权限,我们把用户引导到无权访问页面
$location.path(routeForUnauthorizedAccess);
// 由于这个处理会有延时,而这期间页面位置可能发生改变,
// 我们会一直监视 $locationChangeSuccess 事件
// 并且当该事件发生的时,就把掉承诺解决掉。
$rootScope.$on('$locationChangeSuccess', function (next, current) {
deferred.resolve();
});
} else {
deferred.resolve();
}
}
};
});
关于使用AngularJS对路由进行安全性处理的方法的用户互动如下:
相关问题:怎么设置提高无线路由器的安全性
答:方法/步骤 1 禁用DHCP功能 DHCP 是 Dynamic Host Configuration Protocol(动态主机分配协议)缩写,主要功能就是帮助用户随机分配IP地址,省去了用户手动设置IP地址、子网掩码以及其他所需要的TCP/IP参数的麻烦。这本来是方便用户的功能,但却被... >>详细
相关问题:如何检测无线路由的安全性
答:随着越来越多的朋友进入“无线一派” 这个大家庭,无线网络的安全也就备受大家关注了。相对而言,无线比有线网络更难保护,因为有线网络的固定物理访问点数量有限,而无线网络中信号能够达到的任何一点都可能被使用。 因此各大品牌厂商在无线路由... >>详细
相关问题:如何提高无线路由的安全性?
答:提高无线路由的安全性主要有一下几种方法: 1、禁用DHCP功能 DHCP 是 Dynamic Host Configuration Protocol(动态主机分配协议)缩写,主要功能就是帮助用户随机分配IP地址,省去了用户手动设置IP地址、子网掩码以及其他所需要的TCP/IP参数的麻烦... >>详细
- 【firefox】firefox浏览器不支持innerText的解决
- 【Extjs】Extjs学习过程中新手容易碰到的低级错误
- 【clearInterval】js clearInterval()方法的定义
- 【ComboBox】ComboBox 和 DateField 在IE下消失的
- 【dom】javascript dom追加内容实现示例-追加内容
- 【checkbox】让checkbox不选中即将选中的checkbox
- 【Array】js中更短的 Array 类型转换-类型转换
- 【append】append和appendTo的区别以及appendChil
- 【ExtJs】ExtJs 表单提交登陆实现代码-表单提交-
- 【ajax清除浏览器缓存】Ajax清除浏览器js、css、
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
