开发工具与关键技术:VS/MVC
作者:何桂朋
撰写时间:2019年6月27日
假设情景在一家企业有老板、主管、组长、员工。公司设计一个人员管理系统,给公司各级人员分配系统登录账号。访问权限要不同,如公司老板登录后,可查看员工薪水分布界面,而员工则不能看到,操作权限不同,如系统管理员可以在信息发布界面进行增删改查发布信息,而普通员工只可以在信息发布界面进行查看,不能修改、删除和新增。
这章写一下权限管理的一部分–角色权限修改
角色权限结构如下:
角色权限修改要实现的功能是:将一个角色能操作的模块进行增加和减小。就好比如:
A部长有操作业务、查看员工的工资的权限。现在增加可以调度员工。
我这里是用layui的表格功能做权限管理的页面。
{ field: 'ModularID', title: 'ModularID', hide: true },
{ field: 'ModularName', title: '模块名称', width: 160 },
{ title: '操作', templet: setOperate, align: 'center', fixed: 'right' }
Layui表格中三列重要信息。模块ID、 模块名称、模块对应能操作模块。
模块对应能操作模块通过自定义按钮来操纵。
在生成自定义按钮之前,先获取下面信息。
var ModularDetailIds = new Array();
//原始的选择的ModularDetailIds
var strmodularDetailId = "@ViewBag.modularDetailId.ToString()";
//将从数据库中查询的ModularDetailIds以";"分割得到数组
ModularDetailIds = strmodularDetailId.split(";");
ModularDetailIds 是该角色所拥有权限操作。
用于判断自定义按钮的颜色。(这很重要)
function setOperate(data) {
//layui-btn layui-btn-xs layui-btn-primary
//layui-btn layui-btn-xs
var btns = "";
console.log(data);
var ModularDetailVos = data.ModularDetailVos;
if (ModularDetailVos != null && ModularDetailVos != "") {
for (var i = 0; i < ModularDetailVos.length; i++) {
if (ModularDetailIds.indexOf(ModularDetailVos[i].
ModularDetailID.toString())>-1)
{
btns += '<button type="button" id="btnOperates' +
ModularDetailVos[i].ModularDetailID + '
" class="layui-btn layui-btn-xs" onclick=changeSelect('
+ ModularDetailVos[i].ModularDetailID + ')>' +
ModularDetailVos[i].Special + '</button>';
}
else {
btns += '<button type="button" id="btnOperates' +
ModularDetailVos[i].ModularDetailID + '" class="layui-btn layui-btn-xs layui-btn-primary" onclick=changeSelect(' + ModularDetailVos[i].ModularDetailID + ')>' + ModularDetailVos[i].Special + '</button>';
}
}
}
return btns;
}
通过比较“ModularDetailVos” 和“ModularDetailIds”按钮颜色。
Layui 白色按钮和绿色按钮就在于 白色按钮有“layui-btn-primary”,而绿色没有。
注: 白色按钮是未授权,绿色已授权。