數(shù)據(jù)權(quán)限管理

2019-04-04 17:42 更新
數(shù)據(jù)權(quán)限-模塊截圖
數(shù)據(jù)權(quán)限-功能介紹
數(shù)據(jù)權(quán)限從名字來看,很容易理解,即具有查看和操作某些數(shù)據(jù)的權(quán)限。 舉個例子,有公司表和員工表,業(yè)務(wù)場景中,通常邏輯時各個公司的管理員,只能夠管理自己公司的員工,然而可能某些人的權(quán)力比較大,可以管理其中的兩個公司,這就涉及到數(shù)據(jù)權(quán)限問題了,這里的數(shù)據(jù)權(quán)限為公司權(quán)限。 因為公司是業(yè)務(wù)數(shù)據(jù),會不斷變化,怎樣才能做到根據(jù)公司來過濾員工數(shù)據(jù)呢?下面就為大家介紹,框架如何實現(xiàn)數(shù)據(jù)權(quán)限的過濾。
  1. 添加數(shù)據(jù)權(quán)限
  2. 數(shù)據(jù)權(quán)限在系統(tǒng)開發(fā)階段,就應(yīng)該確定好。當業(yè)務(wù)上將數(shù)據(jù)權(quán)限確定好之后,需要在代碼中將數(shù)據(jù)權(quán)限聲明給框架,讓框架知道,系統(tǒng)中有哪些數(shù)據(jù)權(quán)限。聲明的方式就是在Programe文件中的配置服務(wù)中
                public static IWebHost BuildWebHost(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                .ConfigureServices(x =>
                {
                    List pris = new List();
                    pris.Add(new DataPrivilegeInfo("公司權(quán)限", m => m.Name));
                    x.AddFrameworkService(dataPrivilegeSettings: pris);
                    x.AddLayui();
                })
                .Configure(x =>
                {
                x.UseFrameworkService();
                })
                .Build();
            
    配置如下代碼:
            List pris = new List();
            pris.Add(new DataPrivilegeInfo("公司權(quán)限", m => m.Name));
            x.AddFrameworkService(dataPrivilegeSettings: pris);
            

    當數(shù)據(jù)權(quán)限有多個的時候,繼續(xù)在此添加即可,例如:

            List pris = new List();
            pris.Add(new DataPrivilegeInfo("公司權(quán)限", m => m.Name));
            pris.Add(new DataPrivilegeInfo("部門權(quán)限", m => m.Name));
            x.AddFrameworkService(dataPrivilegeSettings: pris);
            

    通過上述配置后,系統(tǒng)可以知道有哪些數(shù)據(jù)權(quán)限。在新建數(shù)據(jù)權(quán)限過程中,"數(shù)據(jù)權(quán)限"字段的下拉列表中,會顯示出配置的數(shù)據(jù)權(quán)限的內(nèi)容。如圖:

    選擇公司權(quán)限后,系統(tǒng)會將所有公司表中的數(shù)據(jù)顯示到"允許訪問"字段中,所以,需要在公司表中添加業(yè)務(wù)數(shù)據(jù),之后可以通過勾選"允許訪問"中的業(yè)務(wù)數(shù)據(jù),從而達到分配數(shù)據(jù)權(quán)限的目的。如圖:

    分配數(shù)據(jù)權(quán)限可以分配到用戶組,也可以分配到單個用戶。"權(quán)限類別"上選擇用戶組權(quán)限,即可分配到用戶組上,選擇用戶權(quán)限,即可分配到用戶上。
    用戶組和用戶的輸入框具有模糊查詢的功能,便于用戶進行選擇。如圖:

  3. 使用數(shù)據(jù)權(quán)限
  4. 查詢條件中通過LoginUserInfo.DataPrivileges使用數(shù)據(jù)權(quán)限
                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);
                        }
                }
            
    查詢的數(shù)據(jù)列表通過DPWhere(LoginUserInfo.DataPrivileges,x=>x.CompanyID)方式根據(jù)數(shù)據(jù)權(quán)限過濾數(shù)據(jù)
                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;
                }
            


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號