用户管理模块包括 新增用户、修改用户、展示用户列表、删除用户、用户角色分配、用户角色删除、用户权限分配

这里只介绍关于权限有关的 用户角色分配、用户角色删除、用户权限分配

新建控制器 UserInfoController继承 BaseController

 #region 展示用户已经有的角色
public ActionResult ShowUserRoleInfo()
{
int id = int.Parse(Request["id"]);
var userInfo= UserInfoService.LoadEntities(u=>u.ID==id).FirstOrDefault();
ViewBag.UserInfo = userInfo;
//查询所有的角色.
short delFlag = (short)DeleteEnumType.Normarl;
var allRoleList= RoleInfoService.LoadEntities(r=>r.DelFlag==delFlag).ToList();
//查询一下要分配角色的用户以前具有了哪些角色编号。
var allUserRoleIdList = (from r in userInfo.RoleInfo
select r.ID).ToList();
ViewBag.AllRoleList = allRoleList;
ViewBag.AllUserRoleIdList = allUserRoleIdList;
return View();
} #endregion #region 完成用户角色的分配
public ActionResult SetUserRoleInfo()
{
int userId = int.Parse(Request["userId"]);
string[]allKeys=Request.Form.AllKeys;//获取所有表单元素name属性值。
List<int> roleIdList = new List<int>();
foreach (string key in allKeys)
{
if (key.StartsWith("cba_"))
{
string k = key.Replace("cba_","");
roleIdList.Add(Convert.ToInt32(k));
}
}
if (UserInfoService.SetUserRoleInfo(userId, roleIdList))//设置用户的角色
{
return Content("ok");
}
else
{
return Content("no");
}
} #endregion
#region 展示用户权限
public ActionResult ShowUserAction()
{
int userId = int.Parse(Request["userId"]);
var userInfo=UserInfoService.LoadEntities(u=>u.ID==userId).FirstOrDefault();
ViewBag.UserInfo = userInfo;
//获取所有的权限。
short delFlag = (short)DeleteEnumType.Normarl;
var allActionList= ActionInfoService.LoadEntities(a => a.DelFlag == delFlag).ToList();
//获取要分配的用户已经有的权限。
var allActionIdList = (from a in userInfo.R_UserInfo_ActionInfo
select a).ToList();
ViewBag.AllActionList = allActionList;
ViewBag.AllActionIdList = allActionIdList;
return View();
}
#endregion #region 完成用户权限的分配
public ActionResult SetUserAction()
{
int actionId = int.Parse(Request["actionId"]);
int userId = int.Parse(Request["userId"]);
bool isPass = Request["isPass"] == "true" ? true : false;
if (UserInfoService.SetUserActionInfo(actionId, userId, isPass))
{
return Content("ok");
}
else
{
return Content("no");
}
}
#endregion #region 完成权限删除
public ActionResult ClearUserAction()
{
int actionId = int.Parse(Request["actionId"]);
int userId = int.Parse(Request["userId"]);
var r_userInfo_actionInfo=R_UserInfo_ActionInfoService.LoadEntities(r=>r.ActionInfoID==actionId&&r.UserInfoID==userId).FirstOrDefault();
if (r_userInfo_actionInfo != null)
{
if (R_UserInfo_ActionInfoService.DeleteEntity(r_userInfo_actionInfo))
{
return Content("ok:删除成功!!");
}
else
{
return Content("ok:删除失败!!");
}
}
else
{
return Content("no:数据不存在!!");
} }
#endregion

UserInfoService中添加分配角色和分配权限的方法

   /// <summary>
/// 为用户分配角色
/// </summary>
/// <param name="userId">用户编号</param>
/// <param name="roleIdList">要分配的角色的编号</param>
/// <returns></returns>
public bool SetUserRoleInfo(int userId, List<int> roleIdList)
{
var userInfo = this.CurrentDBSession.UserInfoDal.LoadEntities(u=>u.ID==userId).FirstOrDefault();//根据用户的编号查找用户的信息
if (userInfo != null)
{
userInfo.RoleInfo.Clear();
foreach (int roleId in roleIdList)
{
var roleInfo = this.CurrentDBSession.RoleInfoDal.LoadEntities(r=>r.ID==roleId).FirstOrDefault();
userInfo.RoleInfo.Add(roleInfo);
}
return this.CurrentDBSession.SaveChanges();
}
return false; } /// <summary>
/// 完成用户权限的分配
/// </summary>
/// <param name="actionId"></param>
/// <param name="userId"></param>
/// <param name="isPass"></param>
/// <returns></returns>
public bool SetUserActionInfo(int actionId, int userId, bool isPass)
{
//判断userId以前是否有了该actionId,如果有了只需要修改isPass状态,否则插入。
var r_userInfo_actionInfo = this.CurrentDBSession.R_UserInfo_ActionInfoDal.LoadEntities(a=>a.ActionInfoID==actionId&&a.UserInfoID==userId).FirstOrDefault();
if (r_userInfo_actionInfo == null)
{
R_UserInfo_ActionInfo userInfoActionInfo = new R_UserInfo_ActionInfo();
userInfoActionInfo.ActionInfoID = actionId;
userInfoActionInfo.UserInfoID = userId;
userInfoActionInfo.IsPass =isPass;
this.CurrentDBSession.R_UserInfo_ActionInfoDal.AddEntity(userInfoActionInfo);
}
else
{
r_userInfo_actionInfo.IsPass = isPass;
this.CurrentDBSession.R_UserInfo_ActionInfoDal.EditEntity(r_userInfo_actionInfo);
}
return this.CurrentDBSession.SaveChanges(); }

MVC基于角色权限控制--用户管理的更多相关文章

  1. MVC基于角色权限控制--管理角色

    管理角色分为 添加角色.删除角色.修改角色.给角色分配权限(修改角色权限) 新建RoleInfoController继承BaseController namespace CZBK.ItcastOA.W ...

  2. MVC基于角色权限控制--数据库设计

    在网站后台设计过程中都会遇上权限控制这一问题 当前较为流行的解决方案是基于角色的权限管理 基本思路如下 分别建立 用户信息表.角色信息表.权限信息表 让用户和角色关联,角色和权限关联,当用户访问时,通 ...

  3. MVC基于角色权限控制--权限过滤

    用户访问服务器实际上就是访问控制器下的方法,因此在权限控制就是控制器方法的访问权限 为了方便控制,我们可以建立一个基类控制器(BaseController),让需要的控制器继承这个控制器即可,在Bas ...

  4. MVC基于角色权限控制--菜单展示

    在用户成功登陆后台页面后,我们需要将当前用户拥有的权限通过菜单的形式展现出来,将未具备的权限隐藏 新建一个HomeController,用于展示后台首页和获取用户权限数据 namespace CZBK ...

  5. rbac(基于角色权限控制)-------权限管理

    权限管理 创建一个rbac和app的应用,这个rbac主要是用来存放权限的,全称叫做基于角色权限控制 一.先看配置文件合适不,给创建的rbac在配置文件里面设置一下 找到INSTALLED_APPS= ...

  6. php_ThinkPHP的RBAC(基于角色权限控制)详解

    一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注. 在RBAC中,权限与角色相关联,用户通 ...

  7. 基于角色权限管理:rbac具体代码实现

    权限管理 创建一个rbac和app的应用,这个rbac主要是用来存放权限的,全称叫做基于角色权限控制 一.先看配置文件合适不,给创建的rbac在配置文件里面设置一下 找到INSTALLED_APPS= ...

  8. ASP.NET MVC 基于角色的权限控制系统的示例教程

    上一次在 .NET MVC 用户权限管理示例教程中讲解了ASP.NET MVC 通过AuthorizeAttribute类的OnAuthorization方法讲解了粗粒度控制权限的方法,接下来讲解基于 ...

  9. 自学Aruba5.1-Aruba 基于角色(role)的策略管理(重点)

    点击返回:自学Aruba之路 自学Aruba5.1-Aruba 基于角色(role)的策略管理(重点) 1. 角色Role介绍 在ArubaOS中,用户(User)指的是已经完成连接,并获取到IP地址 ...

随机推荐

  1. ALGO-143_蓝桥杯_算法训练_字符串变换

    问题描述 相信经过这个学期的编程训练,大家对于字符串的操作已经掌握的相当熟练了.今天,徐老师想测试一下大家对于字符串操作的掌握情况.徐老师自己定义了1,,,,5这5个参数分别指代不同的5种字符串操作, ...

  2. ALGO-11_蓝桥杯_算法训练_瓷砖铺放(递归)

    问题描述 有一长度为N(<=N<=)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限.要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一共有如下5 ...

  3. bzoj4939: [Ynoi2016]掉进兔子洞

    将权值排序,设权值x排序后在[l,r]出现,x在区间中出现k次,则用[l,l+k-1]为1,[l+k,r]为0来表示x的出现次数 用bitset表示可重集中每个元素的出现次数,用莫队处理出询问区间对应 ...

  4. IE浏览器强制不是要兼容视图

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta ht ...

  5. 在html中用js代替${pagecontext.request.getcontextpath}这样就不用使用jsp了

    var pathArray = window.location.pathname.split('/');  var secondLevelLocation = pathArray[1];  var l ...

  6. set函数&操作

    集合的交叉并补 交集, 共同的部分 set1 & set2 set1.intersection(set2) 差集 set1有set2没有的元素 set1 - set2 set1.differe ...

  7. 牛客网剑指Offer——正则表达式匹配

    1. 题目描述 请实现一个函数用来匹配包括'.'和'*'的正则表达式.模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次). 在本题中,匹配是指字符串的所有字符匹配整 ...

  8. Django中的ORM相关操作:F查询,Q查询,事物,ORM执行原生SQL

    一    F查询与Q查询: 1 . F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的 ...

  9. 如何通过权限控制EXP导出指定的表

    今天一客户朋友咨询一个Oracle数据库用户EXP权限控制的问题,问我有没有办法可以解决.问题是这样的: 目前他们那边有外面的开发公司人员在核心系统做开发,考虑到系统数据的敏感性,给他们建了一个数据库 ...

  10. 错误为Lc.exe已退出,代码为-1

    近来在做项目的时候,突然遇到 了 LC.exe 已退出,代码为-1 的提示,怎么也编译不了,在查了相关的资料后,终于明白了原因,其解决方案如下 : 1. 以管理员的身份来运行vs, 并把项目中“pro ...