• <menu id="w2i4a"></menu>
  • logo DevExpress使用教程

    文檔首頁>>DevExpress使用教程>>DevExpress使用教程:如何根據(jù)當前用戶隱藏導(dǎo)航項

    DevExpress使用教程:如何根據(jù)當前用戶隱藏導(dǎo)航項


    下載DevExpress v20.1完整版    DevExpress v20.1漢化資源獲取

    DevExpress Universal Subscription擁有.NET開發(fā)需要的所有平臺控件,包含600多個UI控件、報表平臺、DevExpress Dashboard eXpressApp 框架、適用于 Visual Studio的CodeRush等一系列輔助工具。

    屢獲大獎的軟件開發(fā)平臺DevExpress Universal 2020年全新首發(fā)v20.1,最新版擁有眾多新產(chǎn)品和數(shù)十個具有高影響力的功能,可為桌面、Web和移動應(yīng)用提供直觀的解決方案,全面解決各種使用場景問題。要體驗?點擊下載>>

    系統(tǒng)背景
    • 平臺:Frameworks (XAF & XPO)
    • 產(chǎn)品:DeXpressApp Framework

    我們的 Security System 允許通過配置某些用戶的導(dǎo)航權(quán)限為其隱藏導(dǎo)航項,可以用兩種模式配置這些權(quán)限。

    從v16.2開始,可以將導(dǎo)航權(quán)限分配給各個導(dǎo)航項目。默認情況下,在使用向?qū)?chuàng)建的新項目中啟用此功能,要在從舊版本升級時啟用它,必須將SecurityStrategy.SupportNavigationPermissionsForTypes選項設(shè)置為false。 如果項目基于Entity Framework,則也有必要更新數(shù)據(jù)庫。

    在v16.1和更早版本中,可以通過Type Permissions設(shè)置中提供的AllowNavigate選項將導(dǎo)航權(quán)限分配給特定的對象類型。 如果當前用戶沒有導(dǎo)航到該類型的權(quán)限,則從導(dǎo)航控件中刪除特定于相應(yīng)類型的所有導(dǎo)航項目。 將舊項目升級到v16.2和更高版本時,默認情況下啟用此模式。要在使用向?qū)?chuàng)建的新項目中啟用它,請打開應(yīng)用程序設(shè)計器,并將SecurityStrategy.SupportNavigationPermissionsForTypes屬性值更改為false。

    本文將演示如何手動實現(xiàn)第一種模式,如果項目使用的XAF版本尚未實現(xiàn)導(dǎo)航權(quán)限功能,則本文中演示的方法很有用。

    注意:如果使用此示例中提供的解決方案并升級到版本16.2,則此代碼可能會停止正常運行。 在這種情況下,請使用本文結(jié)尾處提供的建議。

    如果您的XAF版本低于16.2,并且您需要授予單個導(dǎo)航項(例如,DashboardView或特定ListView模型)的權(quán)限,請使用下面介紹的解決方案擴展安全系統(tǒng)的功能。 在本文中,HiddenNavigationItems屬性允許您按其ID隱藏導(dǎo)航項,這將添加到角色類。

    本文中顯示的覆蓋ShowNavigationItemController.SynchItemWithSecurity方法的方法也適用于與安全系統(tǒng)不直接相關(guān)的任務(wù),您可以通過這種方式隱藏或自定義任何導(dǎo)航項目。

    實現(xiàn)步驟:

    1. 實現(xiàn)自定義權(quán)限類型NavigationItemPermission,可用于通過其ID檢查特定導(dǎo)航項目的訪問權(quán)限。
    2. 實現(xiàn)一個自定義權(quán)限請求 - NavigationItemPermissionRequest - 該請求將發(fā)送以檢查當前用戶是否有權(quán)訪問某個導(dǎo)航項目。
    3. 實現(xiàn)一個自定義權(quán)限請求處理器NavigationItemPermissionRequestProcessor,它將確定當前用戶是否對接收到的權(quán)限請求具有權(quán)限。
    4. 使用HiddenNavigationItems屬性實現(xiàn)自定義角色。 使用GetPermissions方法對其進行擴展,以基于HiddenNavigationItems屬性的值創(chuàng)建NavigationPermission實例。
    5. 在應(yīng)用程序設(shè)計器安全系統(tǒng)的RoleType屬性中指定自定義角色。
    6. 通過處理Program.cs和Global.asax.cs文件中的SecurityStrategy.CustomizeRequestProcessors事件,在應(yīng)用程序中注冊權(quán)限請求處理器。
    7. 實現(xiàn)ShowNavigationItemController的后代 - CustomShowNavigationItemController - 并重寫其SynchItemWithSecurity方法以停用CustomSecurityRole.HiddenNavigationItems屬性禁止的導(dǎo)航項。

    在項目中執(zhí)行了這些步驟之后,您將能夠?qū)⒕哂蠬iddenNavigationItems屬性的角色分配給所需的用戶,以限制他們對某些導(dǎo)航項的訪問。

    注意:本文基于PermissionPolicyRole和PermissionPolicyUser類。在解決方案向?qū)е羞x擇Allow/Deny權(quán)限策略時,安全系統(tǒng)將使用這些類。 如果您的項目是使用較早的XAF版本(16.1之前的版本)創(chuàng)建的,并且使用了SecuritySystemRole和SecuritySystemUser類,請在下面的組合框中更改版本號,以查看這些類的示例。

    v16.2的升級說明:

    升級到此版本后,此示例舊版本中使用的代碼可能會停止工作。 要解決此問題,請從示例的新版本中復(fù)制相關(guān)代碼,或者通過添加以下方法來修改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技術(shù)交流群2:775869749      歡迎一起進群討論

    獲取第一手DevExpress咨詢,盡在DevExpress中文網(wǎng)!

    慧都高端UI界面開發(fā)
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();