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

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

新建控制器 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. WhereHows前后端配置文件

    前端: # This is the main configuration file for the application. # ~~~~~ # Secret key # ~~~~~ # The se ...

  2. 【Mysql】事务日志-Write Ahead logging vs command-logging(转)

    原理讲解: Write Ahead logging vs command logging Write Ahead logging 持久化数据保存在磁盘,数据的存储是随机的,并非顺序: 内存中保存磁盘数 ...

  3. 使用keytool 生成数字keystore

    生成本地证书 在密钥库中生成本地数字证书:需要提供身份.加密算法.有效期等信息: keytool指令如下,产生的本地证书后缀名为:*.keystore keytool -genkeypair -key ...

  4. uoj#209. 【UER #6】票数统计

    http://uoj.ac/problem/209 当x!=y时,这个限制条件是确定的,可以枚举总通过数,用组合数计算,当x==y时,这个限制条件表示前x个全部通过或后x个全部通过,只有最大的x有用, ...

  5. Redis集群事物提交异常Multi-key operations must involve a single slot

    redis做完集群后不同键在同一事物中提交,因为key的hash计算结果不同不能分配到同一个分片上,因此出现此异常. 解决方案:在本次事物的key内添加"{tag}",这时redi ...

  6. Linux下静态库和动态库

    函数库分为静态库和动态库 动态库(格式为libname.so[.主版本号.次版本号.发行号]).在程序编译时并不会被链接到目标代码中,而是在程序运行时才被载入. 静态库是目标文件.a的归档文件(格式为 ...

  7. 禅道在docker上部署与迁移

    一.禅道部署 1.下载地址 禅道开源版:   http://dl.cnezsoft.com/zentao/docker/docker_zentao.zip 数据库用户名: root,默认密码: 123 ...

  8. ROS设备的性价比图

  9. T-SQL 有参数存储过程的创建与执行

    use StudentManager go if exists(select * from sysobjects where name='usp_ScoreQuery2') drop procedur ...

  10. Linux下安装与卸载anaconda

    安装:到安装文件夹的目录下输入 bash Anaconda3-4.1.1-Linux-x86_64.sh 卸载:输入