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

2019-04-04 17:42 更新
數(shù)據(jù)權(quán)限-模塊截圖
數(shù)據(jù)權(quán)限-功能介紹
數(shù)據(jù)權(quán)限從名字來(lái)看,很容易理解,即具有查看和操作某些數(shù)據(jù)的權(quán)限。 舉個(gè)例子,有公司表和員工表,業(yè)務(wù)場(chǎng)景中,通常邏輯時(shí)各個(gè)公司的管理員,只能夠管理自己公司的員工,然而可能某些人的權(quán)力比較大,可以管理其中的兩個(gè)公司,這就涉及到數(shù)據(jù)權(quán)限問(wèn)題了,這里的數(shù)據(jù)權(quán)限為公司權(quán)限。 因?yàn)楣臼菢I(yè)務(wù)數(shù)據(jù),會(huì)不斷變化,怎樣才能做到根據(jù)公司來(lái)過(guò)濾員工數(shù)據(jù)呢?下面就為大家介紹,框架如何實(shí)現(xiàn)數(shù)據(jù)權(quán)限的過(guò)濾。
  1. 添加數(shù)據(jù)權(quán)限
  2. 數(shù)據(jù)權(quán)限在系統(tǒng)開(kāi)發(fā)階段,就應(yīng)該確定好。當(dā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);
            

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

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

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

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

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

  3. 使用數(shù)據(jù)權(quán)限
  4. 查詢(xún)條件中通過(guò)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);
                        }
                }
            
    查詢(xún)的數(shù)據(jù)列表通過(guò)DPWhere(LoginUserInfo.DataPrivileges,x=>x.CompanyID)方式根據(jù)數(shù)據(jù)權(quán)限過(guò)濾數(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)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)