DevExpress使用教程:如何根据当前用户隐藏导航项

翻译|行业资讯|编辑:龚雪|2020-09-14 10:26:38.367|阅读 44 次

概述:DevExpress Universal Subscription拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpress Dashboard eXpressApp 框架、适用于 Visual Studio的CodeRush等一系列辅助工具。

# 正版采购狂欢节,企业采购正当时 # # 31款JAVA开发必备控件和工具 #

相关链接:

下载DevExpress v20.1完整版    DevExpress v20.1汉化资源获取

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方法的方法也适用于与安全系统不直接相关的任务,您可以通过这种方式隐藏或自定义任何导航项目。

实现步骤:

  1. 实现自定义权限类型NavigationItemPermission,可用于通过其ID检查特定导航项目的访问权限。
  2. 实现一个自定义权限请求 - NavigationItemPermissionRequest - 该请求将发送以检查当前用户是否有权访问某个导航项目。
  3. 实现一个自定义权限请求处理器NavigationItemPermissionRequestProcessor,它将确定当前用户是否对接收到的权限请求具有权限。
  4. 使用HiddenNavigationItems属性实现自定义角色。 使用GetPermissions方法对其进行扩展,以基于HiddenNavigationItems属性的值创建NavigationPermission实例。
  5. 在应用程序设计器安全系统的RoleType属性中指定自定义角色。
  6. 通过处理Program.cs和Global.asax.cs文件中的SecurityStrategy.CustomizeRequestProcessors事件,在应用程序中注册权限请求处理器。
  7. 实现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技术交流群2:775869749      欢迎一起进群讨论

获取第一手DevExpress咨询,尽在DevExpress中文网!

慧都高端UI界面开发


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果

文章转载自:慧都网

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
title
相关厂商
相关产品
DevExpress Universal Subscription

行业领先的界面控件开发包,帮助企业构建卓越应用!

DevExpress WPF Subscription

高效MVVM开发模式,WPF界面解决方案首选工具,帮助企业实现酷炫动效界面。

DevExpress VCL Controls

用于Delphi和C ++ Builder的VCL组件,提供高影响力的业务解决方案。

DevExpress WinForms Subscription

为Windows Forms平台创建具有影响力的业务解决方案,高性价比WinForms界面控件套包。

DevExpress DXperience Subscription

高性价比的企业级.NET用户界面套包,助力企业创建卓越应用!

DevExpress ASP.NET Controls

多款重量级ASP.NET用户界面组件套包,让您快速开发出完美、强大的应用程序!

在线
客服
咨询
电话
400-700-1020
在线
QQ
购物车 反馈 返回
顶部
在线客服系统
live chat