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

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

新建控制器 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. MySQL 服务启动y异常: 本地无法启动MySQL服务,报的错误:1067,进程意外终止---解决

    启动MySQL后,几秒钟后直接报错了 然后在事件查看器中发现了几条错误信息 Can't start server: Bind on TCP/IP port: No such file or direc ...

  2. P1258小车问题

    传送 很多人质疑它是二分,但其实它就是二分(我会说我不会解方程吗) 据说有很多人没看懂题干在说些什么,那就不要管题干了.拿样例算一遍,我们看看样例的答案是怎么算出来的. 这是样例.看到这个数,我们很懵 ...

  3. studio之mac快捷键

    2. SouceTree忽略文件:  .gitignore文件编辑: 忽略指定文件:直接写文件名 忽略文件夹:直接写文件夹路径,例:target或者target/ -> 忽略target下的所有 ...

  4. [UE4]实例化材质

    在虚幻引擎 4 中,材质实例化用来更改材质的外观,而不会引起成本高昂的材质重新编译. 实例化材质官方文档

  5. win10家庭版怎么开启Administrator超级管理员帐户

    一.win10家庭版开启administrator方法: 1.通过Cortana搜索cmd,匹配出“命令提示符”,右键以管理员身份运行:   2.在打开的命令提示符窗口输入net user admin ...

  6. 知识点:Navicet Mysql数据库电脑本地备份

    Navicet Mysql数据库电脑本地备份 1.打开navicat客户端,连上mysql后,双击左边你想要备份的数据库.点击“计划”,再点击“新建批处理作业”.     2.双击上面的可用任务,它就 ...

  7. UE4 Socket多线程非阻塞通信

    转自:https://blog.csdn.net/lunweiwangxi3/article/details/50468593 ue4自带的Fsocket用起来依旧不是那么的顺手,感觉超出了我的理解范 ...

  8. mdm9607 gpio12~17改成普通gpio的方法

    qualcomm mdm9607的gpio12~gpio17定义如下: 现在如果想要设置GPIO_12~GPIO_17为普通GPIO口. 需要修改如下: 顺便附上qualcomm的说明: Remove ...

  9. ie-table不显示边框解决办法

    .thisTd {          background-clip: padding-box;           position:relative; } 原来背景也有边界的:决定背景会盖住哪些部 ...

  10. jvm内存分区及各区线程问题

    一.java内存模型图 二.直观分类图 三.各区简单描述 1.堆(heap):主要存放对象的实例也包括数组,是垃圾管理的主要作用区,是线程共享的 2.栈(stack):①虚拟机栈:描述的是 Java ...