前言 这一篇我们将完成系统的权限设置功能以及不同角色用户登录系统后动态加载菜单。注意:此示例权限只针对菜单级,如果园友需要更复杂的系统权限设置,可以拓展到按钮级或属性级。用户的登录采用Form认证来实现,这样可以有效地防止非授权用户或页面链接对系统造成不安全的操作。 权限 ...
前言
- 这一篇我们将完成系统的权限设置功能以及不同角色用户登录系统后动态加载菜单。注意:此示例权限只针对菜单级,如果园友需要更复杂的系统权限设置,可以拓展到按钮级或属性级。
- 用户的登录采用Form认证来实现,这样可以有效地防止非授权用户或页面链接对系统造成不安全的操作。
权限设置模块
- 页面采用角色列表和菜单列表勾选的方式,即选择角色后勾选可以操作的菜单,这样具有才角色的用户就具有操作这些菜单的权限。界面设置如下:
- 界面选择的roleID和menuID我们采用字符串的方式进行拼接。在controller中采用object类型进行接收,然后进行转化后就可以得到传入的值。权限设置的参考代码如下:
public bool SetPermit(object RoleID, object MenuIDs) { try { get='_blank'>string[] roleArr = RoleID as string[]; long roleID = Convert.ToInt64(roleArr[0].ToString()); S_Role role = context.S_Roles.Where(x => x.ID.Equals(roleID)).FirstOrDefault(); //获取角色 role.S_Menus = new List<S_Menu>(); //删除先前设置的roleID的数据 List<S_Menu> listdate = context.S_Roles.Where(x => x.ID.Equals(roleID)).FirstOrDefault().S_Menus.ToList(); foreach (var item in listdate) { role.S_Menus.Remove(item); } //写入现有的数据 string[] MenuArr = MenuIDs as string[]; string[] MenuArrString = MenuArr[0].ToString().TrimEnd(',').Split(',').ToArray(); List<long> arr = new List<long>(); foreach (var item in MenuArrString) { arr.Add(Convert.ToInt64(item)); } //必须转化为list集合,否则会出现“已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭”错误 List<S_Menu> query = (from m in context.S_Menus where arr.Contains(m.ID) select m).ToList(); foreach (S_Menu menu in query) { role.S_Menus.Add(menu); menu.S_Roles = new List<S_Role>(); menu.S_Roles.Add(role); } //EF默认启用了事务提交 context.SaveChanges(); return true; } catch { return false; } }
原标题:EF6 CodeFirst+Repository+Ninject+MVC4+EasyUI实践(九)
关键词:mvc
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。