使用angular 实现简单 用户-角色-菜单-按钮权限控制
2016-12-28 20:04
2759 查看
这个是用angular 控制前端按钮权限的一个例子。也没什么权限框架来做,纯属小项目中原创使用
先说一下,设计的表结构。
用户表,角色表,菜单表,按钮权限表,
用户与角色 多对1
角色与菜单多对多
菜单与按钮权限多对多
角色与于按钮权限多对多。
按钮必须归属于一个菜单下,设置有默认启动字段,代表拥有菜单是否默认拥有这个按钮权限。角色与按钮多对多就是为了解决这个问题。
1.首先配置路由器将菜单的映射url 传至各个控制层
.state("app.Manage", {
url: "/Manage",
templateUrl: "views/pages/Manage.html",
controller: "Manage",
resolve: {
deps: ['$ocLazyLoad','$q',
function($ocLazyLoad,$q){
return $q.all([
$ocLazyLoad.load('ui.select'),
]);
}],
menu_url: function() {
return "app.Manage";
}
}
}
2.接下来控制层接收
app.controller('examineeManage', ['$scope', '$http', '$state', '$rootScope', '$stateParams', '$location', '$timeout', '$modal', 'uiUploader', '$log','menu_url',
function($scope, $http, $state, $rootScope, $stateParams ,$location, $timeout, $modal, uiUploader, $log,menu_url) {
3.然后请求 后台获取 当前登录用户在该菜单下所拥有的按钮权限
并 循环拿出属性放至scope 中,(后台处理如果有该权限,值为true,如果没有为false。如:“add”:“true”,“delete”:“false”)
$scope.initUserFunction = function(){
var obj={};
obj.menu_url = menu_url;
$http.post('/get_user_function', angular.toJson(obj)).then(function(response){
var obj = response.data;
for(var s in obj){
$scope[s] = obj[s];
}
},
function(x){
alert('获取权限出错');
})
}
4.页面使用 ng-show,ng-if,ng-disable 等控制该按钮
<botton ng-show="examinee_add">添加</botton>
注:后台可以使用菜单映射地址也就是menuUrl 查到相应的菜单。加上session中获取用户,就可以拿出用户对应的角色->菜单-权限.
先说一下,设计的表结构。
用户表,角色表,菜单表,按钮权限表,
用户与角色 多对1
角色与菜单多对多
菜单与按钮权限多对多
角色与于按钮权限多对多。
按钮必须归属于一个菜单下,设置有默认启动字段,代表拥有菜单是否默认拥有这个按钮权限。角色与按钮多对多就是为了解决这个问题。
1.首先配置路由器将菜单的映射url 传至各个控制层
.state("app.Manage", {
url: "/Manage",
templateUrl: "views/pages/Manage.html",
controller: "Manage",
resolve: {
deps: ['$ocLazyLoad','$q',
function($ocLazyLoad,$q){
return $q.all([
$ocLazyLoad.load('ui.select'),
]);
}],
menu_url: function() {
return "app.Manage";
}
}
}
2.接下来控制层接收
app.controller('examineeManage', ['$scope', '$http', '$state', '$rootScope', '$stateParams', '$location', '$timeout', '$modal', 'uiUploader', '$log','menu_url',
function($scope, $http, $state, $rootScope, $stateParams ,$location, $timeout, $modal, uiUploader, $log,menu_url) {
3.然后请求 后台获取 当前登录用户在该菜单下所拥有的按钮权限
并 循环拿出属性放至scope 中,(后台处理如果有该权限,值为true,如果没有为false。如:“add”:“true”,“delete”:“false”)
$scope.initUserFunction = function(){
var obj={};
obj.menu_url = menu_url;
$http.post('/get_user_function', angular.toJson(obj)).then(function(response){
var obj = response.data;
for(var s in obj){
$scope[s] = obj[s];
}
},
function(x){
alert('获取权限出错');
})
}
4.页面使用 ng-show,ng-if,ng-disable 等控制该按钮
<botton ng-show="examinee_add">添加</botton>
注:后台可以使用菜单映射地址也就是menuUrl 查到相应的菜单。加上session中获取用户,就可以拿出用户对应的角色->菜单-权限.
相关文章推荐
- c#实现按用户角色分配菜单的使用权限(WinForm)
- c#实现按用户角色分配菜单的使用权限(WinForm)
- c#实现按用户角色分配菜单的使用权限(WinForm) 转载
- 一款二级菜单和使用自定义标签实现简单权限控制
- 一款二级菜单和使用自定义标签实现简单权限控制
- angular实现列表按钮的权限控制(ng-if)
- javaWeb用户权限控制简单实现
- Yii中使用RBAC完全指南 (用户角色权限控制)
- 一个简单的实现不同权限的用户登录后看到不同的菜单设计的数据库表清单
- 【转载】【权限控制】角色访问动态生成用户权限菜单树
- 浅析Yii中使用RBAC的完全指南(用户角色权限控制)
- 用户,角色,群组,菜单权限控制
- 一种简单方便的用户权限管理方法--使用菜单来管理用户权限
- 一个简单的实现不同权限的用户登录后看到不同的菜单设计的数据库表清单
- 一种简单方便的用户权限管理方法--使用菜单来管理用户
- 简单的RBAC基于角色的用户权限的实现
- restlet2.1 学习笔记(十一)为用户分配角色,并使用角色控制权限。
- 使用Zend_Auth和Zend_Acl进行登录认证及根据用户角色进行权限控制
- 使用Zend_Auth和Zend_Acl进行登录认证及根据用户角色进行权限控制
- 浅析Yii中使用RBAC的完全指南(用户角色权限控制)