MVC基于角色权限控制--用户管理
用户管理模块包括 新增用户、修改用户、展示用户列表、删除用户、用户角色分配、用户角色删除、用户权限分配
这里只介绍关于权限有关的 用户角色分配、用户角色删除、用户权限分配
新建控制器 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基于角色权限控制--用户管理的更多相关文章
- MVC基于角色权限控制--管理角色
管理角色分为 添加角色.删除角色.修改角色.给角色分配权限(修改角色权限) 新建RoleInfoController继承BaseController namespace CZBK.ItcastOA.W ...
- MVC基于角色权限控制--数据库设计
在网站后台设计过程中都会遇上权限控制这一问题 当前较为流行的解决方案是基于角色的权限管理 基本思路如下 分别建立 用户信息表.角色信息表.权限信息表 让用户和角色关联,角色和权限关联,当用户访问时,通 ...
- MVC基于角色权限控制--权限过滤
用户访问服务器实际上就是访问控制器下的方法,因此在权限控制就是控制器方法的访问权限 为了方便控制,我们可以建立一个基类控制器(BaseController),让需要的控制器继承这个控制器即可,在Bas ...
- MVC基于角色权限控制--菜单展示
在用户成功登陆后台页面后,我们需要将当前用户拥有的权限通过菜单的形式展现出来,将未具备的权限隐藏 新建一个HomeController,用于展示后台首页和获取用户权限数据 namespace CZBK ...
- rbac(基于角色权限控制)-------权限管理
权限管理 创建一个rbac和app的应用,这个rbac主要是用来存放权限的,全称叫做基于角色权限控制 一.先看配置文件合适不,给创建的rbac在配置文件里面设置一下 找到INSTALLED_APPS= ...
- php_ThinkPHP的RBAC(基于角色权限控制)详解
一.什么是RBAC 基于角色的访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注. 在RBAC中,权限与角色相关联,用户通 ...
- 基于角色权限管理:rbac具体代码实现
权限管理 创建一个rbac和app的应用,这个rbac主要是用来存放权限的,全称叫做基于角色权限控制 一.先看配置文件合适不,给创建的rbac在配置文件里面设置一下 找到INSTALLED_APPS= ...
- ASP.NET MVC 基于角色的权限控制系统的示例教程
上一次在 .NET MVC 用户权限管理示例教程中讲解了ASP.NET MVC 通过AuthorizeAttribute类的OnAuthorization方法讲解了粗粒度控制权限的方法,接下来讲解基于 ...
- 自学Aruba5.1-Aruba 基于角色(role)的策略管理(重点)
点击返回:自学Aruba之路 自学Aruba5.1-Aruba 基于角色(role)的策略管理(重点) 1. 角色Role介绍 在ArubaOS中,用户(User)指的是已经完成连接,并获取到IP地址 ...
随机推荐
- Linux搭建Node.js环境
1,安装Node.js curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash sudo yum -y in ...
- java设计模式-State模式
1.背景: MM的状态是非常不固定的,说不定刚才还非常高兴,没准一会就生气了.就跟六月的天似的,说变就变. 封装一下MM的状态:smile,cry,say:MM的状态决定了这些方法该怎么执行. 2 ...
- android 照片旋转并保存
/** * 读取图片属性:旋转的角度 * @param path 图片绝对路径 * @return degree旋转的角度 */ public int readPictureDegree(String ...
- [UE4]自定义结构体、类、数据表
自定义数据表: #pragma once #include "CoreMinimal.h" #include "Engine/UserDefinedStruct.h&qu ...
- Mybatis 系列3-结合源码解析properties节点和environments节点
[Mybatis 系列10-结合源码解析mybatis 执行流程] [Mybatis 系列9-强大的动态sql 语句] [Mybatis 系列8-结合源码解析select.resultMap的用法] ...
- java下载excel,excel从数据库获取数据
<!-- poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId&g ...
- XML与 实体的相互转化
using System; using System.Linq; using System.Xml; using System.Reflection; using System.Data; using ...
- 开关Windows休眠功能
在windows休眠的时候会把内存里的数据缓存到硬盘的C:/Hiberfil.sys文件,万一断电能够从中恢复状态,然而这对SSD硬盘损耗很大,如果没必要还是关了吧: 关闭: powercfg -h ...
- ECharts动态加载堆叠柱状图的实例
一.引入echarts.js文件(下载页:http://echarts.baidu.com/download.html) 二.HTML代码: <div style="width: 10 ...
- Hive快捷查询:不启用Mapreduce job启用Fetch task
启用MapReduce Job是会消耗系统开销的.对于这个问题,从Hive0.10.0版本开始,对于简单的不需要聚合的类似SELECT <col> from <table> L ...