构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(20)-权限管理系统-根据权限获取菜单

简介: 原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(20)-权限管理系统-根据权限获取菜单 不知不觉到20讲,真是漫长的日子,可惜最近工作挺忙,要不可以有更多的时间来更新,多谢大家的一路支持.如果你觉得好,记得帮我点击推荐^-^ 我们在之前已经插入一些真实数据,其中包含了一个用户和样例程序SysSample的权限,并实现了用户的登录。

原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(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;
            }
        }

别忘记在Home的Controller传入用户的ID

预览下效果

果真是我们要的效果

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

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

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

目录
相关文章
|
前端开发
10EasyUI 菜单与按钮- 创建链接按钮(Link Button)
10EasyUI 菜单与按钮- 创建链接按钮(Link Button)
233 0
|
JavaScript 前端开发
12EasyUI 菜单与按钮- 创建分割按钮(Split Button)
12EasyUI 菜单与按钮- 创建分割按钮(Split Button)
231 0
|
JavaScript 前端开发
11EasyUI 菜单与按钮- 创建菜单按钮(Menu Button)
11EasyUI 菜单与按钮- 创建菜单按钮(Menu Button)
270 0
09EasyUI 菜单与按钮- 创建简单的菜单
09EasyUI 菜单与按钮- 创建简单的菜单
163 0
|
项目管理 数据安全/隐私保护
EasyUI+JavaWeb奖助学金管理系统[16]-权限管理功能的开发
本文目录 1. 本章任务 2. 页面布局 3. 加载角色对应的菜单 4. 提交角色菜单信息 5. 小结
325 0
EasyUI+JavaWeb奖助学金管理系统[16]-权限管理功能的开发
|
应用服务中间件
EasyUI+JavaWeb奖助学金管理系统[8]-加载角色对应菜单功能实现
本文目录 1. 本章任务 2. 构造测试数据 3. 后端提供查询登录角色对应菜单的接口 4. 后台管理页面加载菜单 5. 测试验证
269 0
EasyUI+JavaWeb奖助学金管理系统[8]-加载角色对应菜单功能实现
|
前端开发 .NET 数据库
ASP.NET Core 一步步搭建个人网站(3)_菜单管理
上一章,我们实现了用户的注册和登录,登录之后展示的是我们的主页,页面的左侧是多级的导航菜单,定位并展示用户需要访问的不同页面。目前导航菜单是写死的,考虑以后菜单管理的便捷性,我们这节实现下可视化配置菜单的功能,这样以后我们可以动态的配置导航菜单,不用再编译发布网站程序了。
1770 0