2023年6月20日发(作者:)

RBAC权限RBAC控制权限处理⽂章⽬录前⾔简单的介绍⼀下RBAC权限:就是⽤户通过⾓⾊与权限进⾏关联。简单地说,⼀个⽤户拥有若⼲⾓⾊,每⼀个⾓⾊拥有若⼲权限。这样,就构造成“⽤户-⾓⾊-权限”的授权模型。在这种模型中,⽤户与⾓⾊之间,⾓⾊与权限之间,RBAC处理多半⽤于后台系统,通过⽤户信息判断该⽤户是否有处理该功能的控制权从⽽进⾏的⼀系列的操作⼀、RBAC是什么?RBAC是⼀种权限模型,⽤于判断⽤户是否有该权限进⾏操作⼆、使⽤步骤1.代码展⽰在于MVC框架下进⾏展⽰代码如下(⽰例): ⾸先在Controller的某个⽅法中进⾏权限判断 [CheckMyPermission("addPeople")] public ActionResult ⽅法名() {

} 创建⽂件夹单独放⾃定义过滤器(Filters)⾃定义⼀个类( CheckMyPermissionAttribute )继承AuthorizeAttribute

public class CheckMyPermissionAttribute: AuthorizeAttribute { private string PreName; //写⼀个类⽅法的构造函数和变量⽤于接受从控制器传来个判断⽅法的参数:addPeople public CheckMyPermissionAttribute(string _PreName) { PreName = _PreName; } 重写AuthorizeAttribute下的OnAuthorization public override void OnAuthorization(AuthorizationContext filterContext) { //获取该⽤户的信息,因为之前写过⼀个票据⾝份验证,后⾯写的有⼀个将⽤户信息存⼊到上下⽂HTTPContext中的⼀个⽅法,这就直接获取了。 var user = as MyFormsPrincipalDTO; var admin= ta; //在过滤器中调⽤Services时,由于当前类不是Autofac创建的,所以不会⾃动进⾏注⼊,所以需要⼿动获取Service:vice() IAdminUsersService adminUsersService = vice(); //调⽤Service中的⽅法,传⼊登录⽤户的ID,去获取该⽤户的所有权限 var perlist = missionsByUserID(); //判断⽤户是否有该权限,从⽽进⾏操作 if (!(e=>== PreName)) { if (Request()) { = new JsonResult() { Data = new AjaxResult(, "该⽤户没有权限") }; } else { = new ContentResult() { Content = "该⽤户没有权限" }; } } } }

2.读⼊数据通过⽤户ID获取该⽤户所有⾓⾊信息以及⾓⾊信息下的所有权限:public List GetPermissionsByUserID(long id) { using (var model=new RentHouseModel()) { //实例化DTO模型 List permissionList = new List(); var db = new BaseService(model); //获取id对应的⽤户所有数据 T_AdminUsers admin = (e => == id); //循环⽤户对应下的⾓⾊权限,通过userid获取roleid foreach (var item in admin.T_Roles) { //通过循环roleid

查询出preid

并放⼊集合中并返回 var RoleList = item.T_(e => new PermissionDTO { Name = }).ToList(); ge(RoleList);

} return permissionList; } }总结提⽰:这⾥对⽂章进⾏总结:这篇⽂章我简单的介绍了⼀下RBAC权限模型,RBAC权限模型分为4种,有时间我会⼀⼀更新简单的介绍,我是以⾃⼰做的项⽬去进⾏介绍的,如有异议的地⽅,请⼤家多多指正。

2023年6月20日发(作者:)

RBAC权限RBAC控制权限处理⽂章⽬录前⾔简单的介绍⼀下RBAC权限:就是⽤户通过⾓⾊与权限进⾏关联。简单地说,⼀个⽤户拥有若⼲⾓⾊,每⼀个⾓⾊拥有若⼲权限。这样,就构造成“⽤户-⾓⾊-权限”的授权模型。在这种模型中,⽤户与⾓⾊之间,⾓⾊与权限之间,RBAC处理多半⽤于后台系统,通过⽤户信息判断该⽤户是否有处理该功能的控制权从⽽进⾏的⼀系列的操作⼀、RBAC是什么?RBAC是⼀种权限模型,⽤于判断⽤户是否有该权限进⾏操作⼆、使⽤步骤1.代码展⽰在于MVC框架下进⾏展⽰代码如下(⽰例): ⾸先在Controller的某个⽅法中进⾏权限判断 [CheckMyPermission("addPeople")] public ActionResult ⽅法名() {

} 创建⽂件夹单独放⾃定义过滤器(Filters)⾃定义⼀个类( CheckMyPermissionAttribute )继承AuthorizeAttribute

public class CheckMyPermissionAttribute: AuthorizeAttribute { private string PreName; //写⼀个类⽅法的构造函数和变量⽤于接受从控制器传来个判断⽅法的参数:addPeople public CheckMyPermissionAttribute(string _PreName) { PreName = _PreName; } 重写AuthorizeAttribute下的OnAuthorization public override void OnAuthorization(AuthorizationContext filterContext) { //获取该⽤户的信息,因为之前写过⼀个票据⾝份验证,后⾯写的有⼀个将⽤户信息存⼊到上下⽂HTTPContext中的⼀个⽅法,这就直接获取了。 var user = as MyFormsPrincipalDTO; var admin= ta; //在过滤器中调⽤Services时,由于当前类不是Autofac创建的,所以不会⾃动进⾏注⼊,所以需要⼿动获取Service:vice() IAdminUsersService adminUsersService = vice(); //调⽤Service中的⽅法,传⼊登录⽤户的ID,去获取该⽤户的所有权限 var perlist = missionsByUserID(); //判断⽤户是否有该权限,从⽽进⾏操作 if (!(e=>== PreName)) { if (Request()) { = new JsonResult() { Data = new AjaxResult(, "该⽤户没有权限") }; } else { = new ContentResult() { Content = "该⽤户没有权限" }; } } } }

2.读⼊数据通过⽤户ID获取该⽤户所有⾓⾊信息以及⾓⾊信息下的所有权限:public List GetPermissionsByUserID(long id) { using (var model=new RentHouseModel()) { //实例化DTO模型 List permissionList = new List(); var db = new BaseService(model); //获取id对应的⽤户所有数据 T_AdminUsers admin = (e => == id); //循环⽤户对应下的⾓⾊权限,通过userid获取roleid foreach (var item in admin.T_Roles) { //通过循环roleid

查询出preid

并放⼊集合中并返回 var RoleList = item.T_(e => new PermissionDTO { Name = }).ToList(); ge(RoleList);

} return permissionList; } }总结提⽰:这⾥对⽂章进⾏总结:这篇⽂章我简单的介绍了⼀下RBAC权限模型,RBAC权限模型分为4种,有时间我会⼀⼀更新简单的介绍,我是以⾃⼰做的项⽬去进⾏介绍的,如有异议的地⽅,请⼤家多多指正。