這期內容當中小編將會給大家帶來有關DevExpress中如何根據當前用戶隱藏導航項,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
下載DevExpress v20.1完整版
DevExpress技術交流群2:775869749 歡迎一起進群討論
DevExpress Universal Subscription擁有.NET開發需要的所有平臺控件,包含600多個UI控件、報表平臺、DevExpress Dashboard eXpressApp 框架、適用于 Visual Studio的CodeRush等一系列輔助工具。
屢獲大獎的軟件開發平臺DevExpress Universal 2020年全新首發v20.1,最新版擁有眾多新產品和數十個具有高影響力的功能,可為桌面、Web和移動應用提供直觀的解決方案,全面解決各種使用場景問題。要體驗?點擊下載>>
系統背景
平臺:Frameworks (XAF & XPO)
產品:DeXpressApp Framework
我們的 Security System 允許通過配置某些用戶的導航權限為其隱藏導航項,可以用兩種模式配置這些權限。
從v16.2開始,可以將導航權限分配給各個導航項目。默認情況下,在使用向導創建的新項目中啟用此功能,要在從舊版本升級時啟用它,必須將SecurityStrategy.SupportNavigationPermissionsForTypes選項設置為false。 如果項目基于Entity Framework,則也有必要更新數據庫。
在v16.1和更早版本中,可以通過Type Permissions設置中提供的AllowNavigate選項將導航權限分配給特定的對象類型。 如果當前用戶沒有導航到該類型的權限,則從導航控件中刪除特定于相應類型的所有導航項目。 將舊項目升級到v16.2和更高版本時,默認情況下啟用此模式。要在使用向導創建的新項目中啟用它,請打開應用程序設計器,并將SecurityStrategy.SupportNavigationPermissionsForTypes屬性值更改為false。
本文將演示如何手動實現第一種模式,如果項目使用的XAF版本尚未實現導航權限功能,則本文中演示的方法很有用。
注意:如果使用此示例中提供的解決方案并升級到版本16.2,則此代碼可能會停止正常運行。 在這種情況下,請使用本文結尾處提供的建議。
如果您的XAF版本低于16.2,并且您需要授予單個導航項(例如,DashboardView或特定ListView模型)的權限,請使用下面介紹的解決方案擴展安全系統的功能。 在本文中,HiddenNavigationItems屬性允許您按其ID隱藏導航項,這將添加到角色類。
本文中顯示的覆蓋ShowNavigationItemController.SynchItemWithSecurity方法的方法也適用于與安全系統不直接相關的任務,您可以通過這種方式隱藏或自定義任何導航項目。
實現步驟:
實現自定義權限類型NavigationItemPermission,可用于通過其ID檢查特定導航項目的訪問權限。
實現一個自定義權限請求 - NavigationItemPermissionRequest - 該請求將發送以檢查當前用戶是否有權訪問某個導航項目。
實現一個自定義權限請求處理器NavigationItemPermissionRequestProcessor,它將確定當前用戶是否對接收到的權限請求具有權限。
使用HiddenNavigationItems屬性實現自定義角色。 使用GetPermissions方法對其進行擴展,以基于HiddenNavigationItems屬性的值創建NavigationPermission實例。
在應用程序設計器安全系統的RoleType屬性中指定自定義角色。
通過處理Program.cs和Global.asax.cs文件中的SecurityStrategy.CustomizeRequestProcessors事件,在應用程序中注冊權限請求處理器。
實現ShowNavigationItemController的后代 - CustomShowNavigationItemController - 并重寫其SynchItemWithSecurity方法以停用CustomSecurityRole.HiddenNavigationItems屬性禁止的導航項。
在項目中執行了這些步驟之后,您將能夠將具有HiddenNavigationItems屬性的角色分配給所需的用戶,以限制他們對某些導航項的訪問。
注意:本文基于PermissionPolicyRole和PermissionPolicyUser類。在解決方案向導中選擇Allow/Deny權限策略時,安全系統將使用這些類。 如果您的項目是使用較早的XAF版本(16.1之前的版本)創建的,并且使用了SecuritySystemRole和SecuritySystemUser類,請在下面的組合框中更改版本號,以查看這些類的示例。
v16.2的升級說明:
升級到此版本后,此示例舊版本中使用的代碼可能會停止工作。 要解決此問題,請從示例的新版本中復制相關代碼,或者通過添加以下方法來修改CustomShowNavigationItemController類:
C#
protected override bool SyncItemsWithRequestSecurity(DevExpress.ExpressApp.Actions.ChoiceActionItemCollection items) { base.SyncItemsWithSecurity(items); return true; }
Visual Basic
Protected Overrides Function SyncItemsWithRequestSecurity(ByVal items As DevExpress.ExpressApp.Actions.ChoiceActionItemCollection) As Boolean MyBase.SyncItemsWithSecurity(items) Return True End Function
上述就是小編為大家分享的DevExpress中如何根據當前用戶隱藏導航項了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。