public ActionResult Index() { var list = new List <Cache.Sys_MenuBasisCache.MenuBasisModel>(); var menu = new Cache.Sys_MenuBasisCache().Get(Common.FormsTicket.SystemCode); var role = new Cache.Sys_UserRoleCache().Get(Common.FormsTicket.UserId); var rMenu = new Cache.Sys_RoleMenuCache(); var ids = new List <long>(); foreach (var item in role) { foreach (var rm in rMenu.Get(item.RoleId)) { ids.Add(rm.MenuId); } } foreach (var item in menu) { if (ids.FirstOrDefault(c => c == item.Id) > 0) { list.Add(item); } } var u = new Provider.UserBasisProvider().GetUser(Common.FormsTicket.UserId); ViewBag.LastTime = u != null?u.LastTime.ToString("yyyy年MM月dd日") : ""; ViewBag.MenuItem = list; var title = new Cache.SysSettingCache().Get(Common.FormsTicket.SystemCode); ViewBag.Title = title.SystemName == null ? "" : title.SystemName; return(View()); }
public ActionResult RoleMenu(long?RoleId) { if (RoleId == null || RoleId == 0) { return(Content("请重新操作!")); } var list = new List <Models.RoleBasisModels.RoleMenuModel>(); var menu = new Cache.Sys_MenuBasisCache().Get(Common.FormsTicket.SystemCode); var roleMenu = new Cache.Sys_RoleMenuCache().Get(RoleId.Value); var operate = new Cache.Sys_MenuOperateCache(); var roleOp = new Cache.Sys_RoleOperateCache().Get(RoleId.Value); foreach (var item in menu.Where(c => c.ParentId == Common.Constant.LONG_DEFAULT)) { foreach (var mItem in menu.Where(c => c.ParentId == item.Id)) { var opList = new List <Models.RoleBasisModels.RoleOperateModel>(); foreach (var r in operate.Get(mItem.Id)) { //操作码权限 var ro = roleOp.Where(c => c.OperateId == r.Id).FirstOrDefault(); opList.Add(new Models.RoleBasisModels.RoleOperateModel { OperateId = r.Id, OperateName = r.OperateName, MenuId = mItem.Id, IsSelect = ro != null ? true : false, Id = ro != null ? ro.Id : 0 }); } //二级菜单 var m1 = roleMenu.Where(c => c.MenuId == mItem.Id).FirstOrDefault(); list.Add(new Models.RoleBasisModels.RoleMenuModel { MenuId = mItem.Id, ParentId = mItem.ParentId, MenuName = mItem.MenuName, IsSelect = m1 != null ? true : false, Id = m1 != null ? m1.Id:0, OperateList = opList }); } //一级菜单 var m = roleMenu.Where(c => c.MenuId == item.Id).FirstOrDefault(); list.Add(new Models.RoleBasisModels.RoleMenuModel { MenuId = item.Id, ParentId = item.ParentId, MenuName = item.MenuName, IsSelect = m != null ? true : false, Id = m != null ? m.Id : 0, }); } ViewBag.RoleId = RoleId.Value; return(View(list)); }
public ActionResult Create(long?MenuId) { var model = new Models.MenuBasisModels.MenuBasisModel(); if (MenuId != null) { var cache = new Cache.Sys_MenuBasisCache().Get(Common.FormsTicket.SystemCode).Where(c => c.Id == MenuId).FirstOrDefault(); model = new Models.MenuBasisModels.MenuBasisModel { Id = cache.Id.ToString(), MenuName = cache.MenuName, ActionName = cache.ActionName, ControllerName = cache.ControllerName, MenuIcon = cache.MenuIcon, MenuSort = cache.MenuSort, ParentId = cache.ParentId.ToString() }; } ViewBag.MenuItem = UserControl.SelectItem.MenuItem(MenuId == null ? Common.Constant.LONG_NULL : MenuId.Value, true); return(View(model)); }
/// <summary> /// 重写OnAuthorization /// </summary> /// <param name="filterContext"></param> public override void OnAuthorization(AuthorizationContext filterContext) { //Stopwatch st = new Stopwatch(); //st.Start(); var controllerName = (filterContext.RouteData.Values["controller"].ToString()).ToLower(); var actionName = (filterContext.RouteData.Values["action"].ToString()).ToLower(); if (Common.FormsTicket.UserId == decimal.Zero) { var type = "/1"; if ("Home".ToLower().Contains(controllerName)) { type = string.Empty; } filterContext.Result = new RedirectResult("~/Account/Logout" + type); } else { if (!"Home".ToLower().Contains(controllerName)) { actionName = string.IsNullOrEmpty(ActionName) ? actionName : ActionName.ToLower(); var IsChecked = false; //TODO:返回结果需要重新赋值一个对象不然会引发System.NullReferenceException: 未将对象引用设置到对象的实例。 var menuId = new Cache.Sys_MenuBasisCache().Get(Common.FormsTicket.SystemCode).FirstOrDefault(a => a.ControllerName.ToLower() == controllerName); if (menuId != null) { var id = menuId.Id;//这里不重新定义 menuId 会引发System.NullReferenceException: 未将对象引用设置到对象的实例。 因为下文有对象使用 var operateId = (from a in new Cache.Sys_MenuOperateCache().Get(id) where a.OperateCode.ToLower() == actionName select a.Id).FirstOrDefault(); var UserRole = new Cache.Sys_UserRoleCache().Get(Common.FormsTicket.UserId); var roleMenu = new Cache.Sys_RoleMenuCache(); var roleOperate = new Cache.Sys_RoleOperateCache(); bool menuChecked = false; foreach (var item in UserRole) { var menu = roleMenu.Get(item.RoleId).FirstOrDefault(c => c.MenuId == id); if (menu != null && !menuChecked) { //存在菜单权限 menuChecked = true; } if (menuChecked) { if (actionName == "index") { //默认权限,有菜单权限都能访问index IsChecked = true; break; } var operate = roleOperate.Get(item.RoleId).FirstOrDefault(c => c.OperateId == operateId); if (operate != null) { //存在按钮权限,跳出循环 IsChecked = true; break; } } } } if (!IsChecked) { filterContext.HttpContext.Response.Write("没有权限访问该页面"); filterContext.HttpContext.Response.End(); filterContext.HttpContext.Response.StatusCode = 401;//定义状态后就不会在往下执行了 } } } //st.Stop(); //Common.LogHelper.WriteLog(typeof(UserAuthorize),st.ElapsedMilliseconds.ToString()); }