数据权限管理
2019-04-04 17:42 更新
数据权限-模块截图
数据权限-功能介绍
数据权限从名字来看,很容易理解,即具有查看和操作某些数据的权限。
举个例子,有公司表和员工表,业务场景中,通常逻辑时各个公司的管理员,只能够管理自己公司的员工,然而可能某些人的权力比较大,可以管理其中的两个公司,这就涉及到数据权限问题了,这里的数据权限为公司权限。
因为公司是业务数据,会不断变化,怎样才能做到根据公司来过滤员工数据呢?下面就为大家介绍,框架如何实现数据权限的过滤。
- 添加数据权限
- 使用数据权限 查询条件中通过LoginUserInfo.DataPrivileges使用数据权限
数据权限在系统开发阶段,就应该确定好。当业务上将数据权限确定好之后,需要在代码中将数据权限声明给框架,让框架知道,系统中有哪些数据权限。声明的方式就是在Programe文件中的配置服务中
public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .ConfigureServices(x => { List pris = new List(); pris.Add(new DataPrivilegeInfo("公司权限", m => m.Name)); x.AddFrameworkService(dataPrivilegeSettings: pris); x.AddLayui(); }) .Configure(x => { x.UseFrameworkService(); }) .Build();配置如下代码:
List pris = new List(); pris.Add(new DataPrivilegeInfo("公司权限", m => m.Name)); x.AddFrameworkService(dataPrivilegeSettings: pris);
当数据权限有多个的时候,继续在此添加即可,例如:
List pris = new List(); pris.Add(new DataPrivilegeInfo("公司权限", m => m.Name)); pris.Add(new DataPrivilegeInfo("部门权限", m => m.Name)); x.AddFrameworkService(dataPrivilegeSettings: pris);
通过上述配置后,系统可以知道有哪些数据权限。在新建数据权限过程中,"数据权限"字段的下拉列表中,会显示出配置的数据权限的内容。如图:
选择公司权限后,系统会将所有公司表中的数据显示到"允许访问"字段中,所以,需要在公司表中添加业务数据,之后可以通过勾选"允许访问"中的业务数据,从而达到分配数据权限的目的。如图:
分配数据权限可以分配到用户组,也可以分配到单个用户。"权限类别"上选择用户组权限,即可分配到用户组上,选择用户权限,即可分配到用户上。
用户组和用户的输入框具有模糊查询的功能,便于用户进行选择。如图:
public class EmployeeSearcher : BaseSearcher
{
public List
AllCompanys { get; set; }
[Display(Name = "所属公司")]
public Guid CompanyID { get; set; }
[Display(Name = "员工姓名")]
public String Name { get; set; }
[Display(Name = "员工性别")]
public SexEnum Sex { get; set; }
protected override void InitVM()
{
AllCompanys = DC.Set().GetSelectListItems(LoginUserInfo.DataPrivileges, null, y => y.Name);
}
}
查询的数据列表通过DPWhere(LoginUserInfo.DataPrivileges,x=>x.CompanyID)方式根据数据权限过滤数据
public override IOrderedQueryable GetSearchQuery()
{
var query = DC.Set()
.CheckEqual(Searcher.CompanyID, x=>x.CompanyID)
.CheckContain(Searcher.Name, x=>x.Name)
.CheckEqual(Searcher.Sex, x=>x.Sex)
.DPWhere(LoginUserInfo.DataPrivileges,x=>x.CompanyID)
.Select(x => new Employee_View
{
ID = x.ID,
Name_view = x.Company.Name,
Name = x.Name,
Age = x.Age,
Sex = x.Sex,
})
.OrderBy(x => x.ID);
return query;
}
以上内容是否对您有帮助:
← 菜单管理
更多建议: