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

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

新建控制器 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-126_蓝桥杯_算法训练_水仙花

    问题描述 判断给定的三位数是否 水仙花 数.所谓 水仙花 数是指其值等于它本身 每位数字立方和的数.例 就是一个 水仙花 数. =++ 输入格式 一个整数. 输出格式 是水仙花数,输出"YE ...

  2. Qt 常用类 (4)—— QPoint

    转载:落叶知秋时 QPoint 类代表一个坐标点,实现在 QtCore 共享库中.它可以认为是一个整型的横坐标和一个整型的纵坐标的组合. 构造 QPoint 类支持以下两种构造方式: QPoint() ...

  3. Windump教程-参数介绍

    1 应用 Windump是tcpdump的Windows版本,主要的参数如下: -D 列出所有的接口 -i interface 指定用于抓包的接口 -c packetcount 指定抓包的个数 -w ...

  4. MFC如何在有界面的应用程序中开启控制台窗口

    在有界面的应用程序中开启控制台窗口有时候非常有用,尤其是在调试多线程应用程序中,由于通过断点的方式调试程序时会导致线程挂起从而导致各种难于预料的结果.这时候就可以通过开启控制台窗口往窗口输出信息来查看 ...

  5. java浅析final关键字

    谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字.另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法. ...

  6. 服务网关zuul之六:Zuul高可用

    我们实际使用Zuul的方式如上图,不同的客户端使用不同的负载将请求分发到后端的Zuul,Zuul在通过Eureka调用后端服务,最后对外输出.因此为了保证Zuul的高可用性,前端可以同时启动多个Zuu ...

  7. 用sqoop将mysql的数据导入到hive表

    一.先将mysql一张表的数据用sqoop导入到hdfs 1.1.先在mysql中准备一张测试用的表 mysql> desc user_info; +-----------+---------- ...

  8. URL优化的几个处理方法

    原文链接:http://www.51chinashop.com/shopinfo/dsjs/2014-11-23/100.html 在一个网站中,一个页面对应了多个URL,必然会分散这个页面的权重.因 ...

  9. java打印一下九九乘法表

    public class Multiplication { public static void main(String[] args) { printTable(); } // 打印九九乘法表 pu ...

  10. ajax的跨域解决方案(java+ajax)

    简单的建立一个后台项目 新建servlet: 内容如下: package a; import java.io.IOException; import java.io.PrintWriter; impo ...