在上一篇文章“RDIFramework.NET開發執行個體━表限制條件權限的使用-WinForm”我們講解了在WinForm下表限制條件權限的使用,下面我們來看看在Web下的使用。
在實際的應用中,客戶常有這樣的需求,指定使用者或角色可以看指定條件下的資料,這裡的“指定條件”在RDIFramework.NET架構中,我們稱作為“使用者或角色的限制條件表達式”。要完成這樣的功能,可以通過RDIFramework.NET架構中的使用者或角色的“限制條件權限設定”功能即可完成,再在你的業務表單中調用我們的得到使用者或角色的限制條件表達式接口即可完成。
RDIFramework.NET開發執行個體━表限制條件權限的使用-Web
在上一篇文章“RDIFramework.NET開發執行個體━表限制條件權限的使用-WinForm”我們講解了在WinForm下表限制條件權限的使用,下面我們來看看在Web下的使用。
在實際的應用中,客戶常有這樣的需求,指定使用者或角色可以看指定條件下的資料,這裡的“指定條件”在RDIFramework.NET架構中,我們稱作為“使用者或角色的限制條件表達式”。要完成這樣的功能,可以通過RDIFramework.NET架構中的使用者或角色的“限制條件權限設定”功能即可完成,再在你的業務表單中調用我們的得到使用者或角色的限制條件表達式接口即可完成。
可以調用架構提供的下面幾個接口即可完成對使用者或角色限制條件的得到。
1、RDIFrameworkService.Instance.TableColumnsService.GetConstraint
2、RDIFrameworkService.Instance.TableColumnsService.GetUserConstraint
下面我們以執行個體進行展示限制條件權限的設定,可供使用者參考。
要使用“限制條件權限”首先需要在使用者權限或角色權限中設定使用者或角色的“限制條件”表達式。使用者的“限制條件權限設定”如下圖所示:
在“系統管理”→“使用者權限管理”→“權限設定”→“限制條件權限設定”,即可打開上面的視窗。在“表限制條件”設定視窗,可以選擇我們需要設定表的限制條件,點選“設定條件表達式”即可設定。如下圖所示:
“角色限制條件的設定”與“使用者限制條件設定”類似,可參考上面的“使用者限制條件設定”,角色限制條件設定視窗如下:
經過上面的設定,現在我們就可以使用“限制條件”了,使用很簡單,隻需在需要展示資料的地方通過架構提供的服務接口即可。下面我們以“産品管理”來示範限制條件權限。
在“産品管理”主界面的得到分頁資料的代碼中調用以下接口即可得到使用者的限制條件
1、RDIFrameworkService.Instance.TableColumnsService.GetConstraint(this.UserInfo, PiUserTable.TableName, this.UserInfo.Id, ProductInfoTable.TableName); //按表限制條件獲得資料(按目前使用者)。
2、RDIFrameworkService.Instance.TableColumnsService.GetUserConstraint(this.UserInfo, ProductInfoTable.TableName); //按表限制條件獲得資料(得到使用者與角色的限制條件)。
完整代碼如下:
private void GetPageData(RequestParamModel<CASE_PRODUCTINFOEntity> rpm, HttpContext ctx)
{
var manager = new CASE_PRODUCTINFOManager(this.dbHelper);
int recordCount = 0;
string sort = rpm.Sort;
string order = rpm.Order;
if (string.IsNullOrEmpty(sort))
{
sort = CASE_PRODUCTINFOTable.FieldCREATEON;
}
if (string.IsNullOrEmpty(order))
{
order = "DESC";
}
string filter = rpm.Filter;
if (string.IsNullOrEmpty(filter))
{
filter = CASE_PRODUCTINFOTable.FieldDELETEMARK + " = 0 ";
}
UserInfo cUser = Utils.UserInfo;
//string userConstraintExpress = RDIFrameworkService.Instance.TableColumnsService.GetConstraint(cUser, PiUserTable.TableName, cUser.Id, CASE_PRODUCTINFOTable.TableName); //按表限制條件獲得資料(按目前使用者)。
string userConstraintExpress = RDIFrameworkService.Instance.TableColumnsService.GetUserConstraint(cUser, CASE_PRODUCTINFOTable.TableName); //按表限制條件獲得資料(得到使用者與角色的限制條件)。
if (!string.IsNullOrEmpty(userConstraintExpress))
{
filter += " AND " + userConstraintExpress;
}
var dtTemp = manager.GetDTByPage(out recordCount, rpm.Pageindex, rpm.Pagesize, filter, (sort + " " + order));
ctx.Response.Write(JSONhelper.FormatJSONForEasyuiDataGrid(recordCount, dtTemp));
}
在上圖中我們對使用者”yonghu”設定了限制條件,現在我們以“yonghu”登入系統看下他能看到的資料:
我們對使用者“yonghu”設定的限制條件是單價大于10000,在上圖中,可以看到系統已經自動過濾了資料共143條資料。我們再以超級管理者使用者登入進來看下,如下圖所示:
以超級管理者登入的資料是8971條。
以上隻是一個簡單的執行個體展示,還可以更加靈活的應用到其他各個實用的場合。
作者:
RDIFramework.NET
出處:http://www.cnblogs.com/huyong/
Email:[email protected]
QQ:406590790
微信:13005007127(同手機号)
架構官網:http://www.rdiframework.net/
架構官網部落格:http://blog.rdiframework.net/
架構其他部落格:http://blog.csdn.net/chinahuyong
http://www.cnblogs.com/huyong
RDIFramework.NET,基于全新.NET Framework與.NET Core的快速資訊化系統開發、整合架構,為企業快速建構垮平台、企業級的應用提供了強大支援。
關于作者:系統架構師、資訊系統項目管理師、DBA。專注于微軟平台項目架構、管理和企業解決方案,多年項目開發與管理經驗,曾多次組織并開發多個大型項目,在面向對象、面向服務以及資料庫領域有一定的造詣。現主要從事基于
RDIFramework.NET
架構的技術開發、咨詢工作,主要服務于金融、醫療衛生、鐵路、電信、物流、物聯網、制造、零售等行業。
如有問題或建議,請多多賜教!
本文版權歸作者和CNBLOGS部落格共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,如有問題,可以通過微信、郵箱、QQ等聯系我,非常感謝。