在做限制权限之前首先要出现当前登录用户的权限,如果当前没有登录的用户,则返回登录页面,然后获取当前登录用户的ID,查出当前登录的用户的权限(只是根据主页面的导航菜单来进行权限的限制)!
控制器部分:
If (Session["UserID"]!= null){
int UserID = Convert.ToInt32(Session["UserID"].ToString());
var listReslut = from tbModelur in myModels.S_Modular
join tbModeluDeRe in myModels.S_R_ModularDetail on tbModelur.ModularID equals tbModeluDeRe.ModularID
join tbJuser in myModels.S_Jurisdiction on tbModeluDeRe.ModularDetailID equals tbJuser.ModularDetailID
join tbUserType in myModels.S_UserType on tbJuser.UserTypeID equals tbUserType.UserTypeID
join tbUserDeRe in myModels.S_R_UserRoleDetail on tbUserType.UserTypeID equals tbUserDeRe.UserTypeID
where tbUserDeRe.UserID == UserID
select new
{
ID = tbModeluDeRe.ModularID,
ModularName = tbModelur.Modular.Trim()
};
然后查询所有的权限,用左链接连接着上面查询出来的表格!当前用户的权限所拥有的权限的ID为它自身,没有的权限的ID为0!
var UserModlur = (from tbModelur in myModels.S_Modular
join tbTemp in listReslut on tbModelur.ModularID equals tbTemp.ID into temTable
select new
{
ModularID = tbModelur.ModularID,
ModularName = tbModelur.Modular.Trim(),
ID = temTable.Select(t => t.ID).FirstOrDefault() != null ? temTable.Select(t => t.ID).FirstOrDefault() : 0
}).ToList();
return Json(UserModlur, JsonRequestBehavior.AllowGet);
}else{
return RedirectToAction("Login");
}
JS部分:
var dirIdModlurName = {
"前****售": "FormerSell",
"采***货": "PurchaseStock",
"商**理": "CommodityTions",
"VI***理": "VIPTions",
"日**细": "DaySellList",
"库***整": "StockAdjustment",
"库****": "StockCheck",
"钱****款": "MoneyDiscrepancy",
"库存往***查询": "StockMoneyInsert",
"销售***分析": "SellStatistics",
"经***分析": "ProsecutionStatistics",
"库***析": "StockStatistics",
"进货***": "AccessStatistics",
"进****析": "AccessSellStatistics",
"基****维护": "BaseInformation",
"用户****设定": "UserJurisdiction",
}
查询出来当前导航菜单里面中的所有的菜单(注意菜单栏目的导航菜单必须可以在权限表中的权限的名称一致,导航菜单后面为它的ID名称)。
Post请求上面的控制器中的方法,如果返回的值为空则跳转到登录页面,也是起到了一个重定向的效果,如果不为空则循环返回的值,并且判断所返回的值的ID是否空,如果为空就获取当前的模块名称,查询上面的dirIdModlurName等于它的导航菜单,获取到它的ID,然后根据ID去掉没有的权限对应的菜单!
$.post("/SYTFZ/SelectModularJurisdiction", { time: (new Date()).getTime().toString() }, function (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 = dirIdModlurName[modularName];
$("#" + elId).remove();//去掉没有的权限对应的菜单
//console.log(modularName);
}
}
}
});