一.用户登录页面有三种用户类型选择,分别是超级管理员,职工,用户。这三种不同的类型在登录后通常能看到的会不一样,超级管理员应该能有看到整个后台的权力,其次职工到用户它们都只能看到自己应该看到的部分,这也是我们常说的权限管理设置。
一个项目都是由一个个的小模块组合而成,就好比模块表这张表里有这个项目里所有的小模块,然而权限表就是根据不同的用户角色明细可以看到对应的模块,好比医院系统里我们这种普通用户看不到财务收钱界面。
$(document).ready(function () {
//权限部分
var dirIdModlarName = {
"护士工作站": "NurseWork",
"护嘱管理": "NurseManage",
等·····
}
$.post("/Main/SelectModularJurisdiction", { time:
(newDate()).getTime().toString() }, function (objModulars) {
console.log(objModulars);
if (objModulars ==
"") {
window.location.href =
"/";
} else {
for (key in objModulars) {
var obj = objModulars[key];
if (obj.ID == 0) {
var modularName =
obj.ModularName;
var elId =
dirIdModlarName[modularName];
$("#" +
elId).remove();//去掉没有的权限对应的菜单
}
}
}
});
控制器
需要获取到当前登录的是哪个用户,获取到后用用户ID进行条件筛选查询出该用户有的模块权限,则这里的Linq1为35条,通过左连接方法查询出总共模块为45条。说明这个用户有10个模块是没有访问的权限,然后tempTable的id查询不为空就执行查询,为空就直接赋值为0。
public ActionResultSelectModularJurisdiction()
{
try
{
var
userId = Convert.ToInt32(Session["UserID"].ToString());
var
Linq1 = from tbModual in myModels.S_Modular
join tbModualDetail in myModels.S_ModularDetail on tbModual.ModularID
equals tbModualDetail.ModularID
join tbjdtion in myModels.S_Jdtion on tbModualDetail.ModularDetailID
equals tbjdtion.ModularDetailID
join tbUserType in myModels.S_UserType on tbjdtion.UserTypeID equals
tbUserType.UserTypeID
join tbUserRoleDetail in myModels.R_UserRoleDetail on
tbUserType.UserTypeID equals tbUserRoleDetail.UserTypeID
where tbUserRoleDetail.UserID == userId
select new
{
ID=tbModualDetail.ModularID,
Name=tbModual.ModularName.Trim()
};
//左连接
var userModualars =
(from tbModual in myModels.S_Modular
join
tbTemp in Linq1 on tbModual.ModularID equals tbTemp.ID into tempTable
select
new {
ModularID=tbModual.ModularID,
ModularName=tbModual.ModularName,
ID=tempTable.Select(t=>t.ID).FirstOrDefault()!=null?tempTable.Select(t=>t.ID).FirstOrDefault():0
}).ToList();
return Json(userModualars,
JsonRequestBehavior.AllowGet);
}
catch (Exception e)
{
Console.Write(e);
return Json("", JsonRequestBehavior.AllowGet);
}
}