专栏首页ASP.NET MVC5 后台权限管理系统ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单

ASP.NET MVC5+EF6+EasyUI 后台管理系统(20)-权限管理系统-根据权限获取菜单

不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多的时间来更新,多谢大家的一路支持.如果你觉得好,记得帮我点击推荐^-^

我们在之前已经插入一些真实数据,其中包含了一个用户和样例程序SysSample的权限,并实现了用户的登录。

但有的朋友对表还是有疑惑,通过下面的linq查询,应该你就没有这个困惑了。

不出意外,我们的菜单栏将只显示样例程序这个模块。

这就简单了,我们已经有了获取菜单栏的类了,只要加入用户参与判断即可,所以我们将修改

IBLL BLL IDAL DAL层的Home类(红色为原来的,绿色为最新修改的)

 List<SysModule> GetMenuByPersonId(string moduleId);

List<SysModule> GetMenuByPersonId(string personId, string moduleId);

---------------------------

public List<SysModule> GetMenuByPersonId(string moduleId)         {             return HomeRepository.GetMenuByPersonId(moduleId);         }

 public List<SysModule> GetMenuByPersonId(string personId, string moduleId)         {             return HomeRepository.GetMenuByPersonId(personId,moduleId);         }

---------------------------

List<SysModule> GetMenuByPersonId(string moduleId);

List<SysModule> GetMenuByPersonId(string personId, string moduleId);

---------------------------

最后看到DAL层,这里是获取菜单逻辑代码

 public List<SysModule> GetMenuByPersonId(string moduleId)         {             using (DBContainer db = new DBContainer())             {                 var menus =                 (                     from m in db.SysModule                     where m.ParentId == moduleId                     where m.Id != "0"                     select m                           ).Distinct().OrderBy(a=>a.Sort).ToList();                 return menus;             }         }

public List<SysModule> GetMenuByPersonId(string personId, string moduleId)         {             using (DBContainer db = new DBContainer())             {                 var menus =                 (                     from m in db.SysModule                     join rl in db.SysRight                     on m.Id equals rl.ModuleId                     join r in                         (from r in db.SysRole                          from u in r.SysUser                          where u.Id == personId                          select r)                     on rl.RoleId equals r.Id                     where rl.Rightflag == true                     where m.ParentId == moduleId                     where m.Id != "0"                     select m                           ).Distinct().OrderBy(a => a.Sort).ToList();                 return menus;             }         }

最后更该controller的home方法GetTree

  /// <summary>
        /// 获取导航菜单
        /// </summary>
        /// <param name="id">所属</param>
        /// <returns>树</returns>
        public JsonResult GetTree(string id)
        {
            if (Session["Account"] != null)
            {
                AccountModel account = (AccountModel)Session["Account"];
                List<SysModule> menus = homeBLL.GetMenuByPersonId(account.Id, id);
                var jsonData = (
                        from m in menus
                        select new
                        {
                            id = m.Id,
                            text = m.Name,
                            value = m.Url,
                            showcheck = false,
                            complete = false,
                            isexpand = false,
                            checkstate = 0,
                            hasChildren = m.IsLast ? false : true,
                            Icon = m.Iconic
                        }
                    ).ToArray();
                return Json(jsonData, JsonRequestBehavior.AllowGet);
            }
            else
            {
                return Json("0", JsonRequestBehavior.AllowGet);
            }
        }

预览下效果

果真是我们要的效果

现在要做的就是把之前那些日志管理,异常管理等等加入到数据表中看看效果了。

通过这里你可以熟悉下数据流。

但我总觉得上面的linq语句是可以继续优化的,求linq大神!!!!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ASP.NET MVC5+EF6+EasyUI 后台管理系统(44)-工作流设计-设计表单

    设计表单是比较复杂的一步,完成一个表单的设计其实很漫长,主要分为四步。 ? 开始之前先说说表的结构。 其实表Flow_Form与Flow_FormContent...

    用户1149182
  • ASP.NET MVC5+EF6+EasyUI 后台管理系统(19)-权限管理系统-用户登录

    我们之前做了验证码,登录界面,却没有登录实际的代码,我们这次先把用户登录先完成了,要不权限是讲不下去了 把我们之前的表更新到EF中去 ? 登录在Account控...

    用户1149182
  • 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(14)-EasyUI缺陷修复与扩展

    不知不觉已经过了13讲,(本来还要讲多一讲是,数据验证之自定义验证,基于园友还是对权限这块比较敢兴趣,讲不讲验证还是看大家的反映),我们应该对系统有一个小结。 ...

    用户1149182
  • Java工具集-数学(精准小数运算BigDecimalUtils)

    cwl_java
  • LeetCode动画 | 699.掉落的方块

    这篇文章写着写着,篇幅就变得有点长了,但是这对你很有帮助,因为我在写Java代码过程中进行了两步优化,过程都写下来了。

    我脱下短袖
  • Linux下的计算命令和求和、求平均值、求最值命令梳理

    在Linux系统下,经常会有一些计算需求,那么下面就简单梳理下几个常用到的计算命令 (1)bc命令 bc命令是一种支持任意精度的交互执行的计算器语言。bash内...

    洗尽了浮华
  • 附016.Kubernetes_v1.17.4高可用部署

    Kubernetes的高可用主要指的是控制平面的高可用,即指多套Master节点组件和Etcd组件,工作节点通过负载均衡连接到各Master。HA有通常有如下两...

    木二
  • 去掉小白身份,从学习K线开始

    用户2196435
  • 比较不同的肿瘤somatic突变的signature

    前面我们详细讲解过,sanger研究所科学家【1】提出来了肿瘤somatic突变的signature概念 ,把96突变频谱的非负矩阵分解后的30个特征,在cos...

    生信技能树
  • Python 多进程 多线程数据共享

    py3study

扫码关注云+社区

领取腾讯云代金券