EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

安全系统

本主题描述了安全系统的权限类型。配置角色的权限并将其分配给用户。每个用户应至少具有一个角色。安全系统按照每个角色的权限合并主题中所述,检查每个角色的权限并确定访问权限。

要查看运行中的安全系统,请参阅SecurityDemo应用程序。默认情况下,此演示应用程序位于%PUBLIC%\ Documents \ DevExpress演示19.2 \ Components \ eXpressApp Framework \ SecurityDemo文件夹中。

行政许可

IPermissionPolicyRole.IsAdministrative期权所有可用权限的作用。

Security_AdministrativePermission

您不能使用管理权限拒绝角色的任何权限。

编辑模型权限

IPermissionPolicyRole.CanEditModel选项可将使用当前角色相关联的用户模型编辑器

CanEditModel

当编辑模型或行政许可的,在EditModel行动在可用的工具类。

工具编辑模型

权限政策

当特定类型,对象或成员没有明确指定的权限时,权限策略将确定安全系统的行为。有关更多信息,请参阅“权限策略”主题。

许可政策

在XAF应用程序中,您可以在“导航权限”选项卡中管理对导航控件项的访问。您可以授予或拒绝单个导航项或整个导航组的权限,如下图所示:

Security_NavigationPermissions

项目权限比组权限具有更高的优先级。例如,如果您拒绝访问该组,但授予其某个项目的访问权限,则在导航控件中将启用该项目。

重点

导航权限管理导航控件项目的可见性。他们不授予或拒绝访问导航项的关联业务对象的权限。使用“类型”权限或“对象”权限来管理对这些对象的访问。

注意
  • 选择“拒绝权限策略”时,单个导航项目不支持导航权限。“导航权限”选项卡在此模式下不可用。但是,您可以在“类型权限”选项卡中为每种类型指定导航权限。
  • 如果在XAF v16.1或更早版本中创建了应用程序,则应将应用程序的项目升级到“允许/拒绝权限”策略以启用“导航权限”选项卡。如果将实体框架用作ORM系统,则可能还需要执行迁移以为每个导航项指定权限。
  • 移动应用程序没有提供用于修改导航项目列表的特殊属性编辑器。您只能将它们输入或修改为项目名称用分号分隔的字符串。请注意,XAF不会验证这些项目名称。

类型权限

类型权限”选项卡指定对特定类型的所有对象的访问。下图说明了PermissionPolicyUser详细信息视图。

Security_TypePermissions

可以授予或拒绝以下操作类型:

手术 描述
当前类型的对象是可读的。若要使对象为只读,请允许执行“读”操作,并拒绝“写”操作。
当前类型的对象是可编辑的。
创造 可以创建当前类型的新对象。请注意,授予“创建时写入”功能将不允许用户保存新对象。
删除 当前类型的对象可以删除。

对象权限

对象权限授予对符合指定条件的对象实例的访问权限。下图说明了“类型操作权限”对话框中的“对象权限”选项卡。

Security_SetObjectPermissions

会员权限

成员权限授予对对象的特定成员的访问权限。双击类型权限列表中的记录将调用以下对话框。

Security_SetMemberPermissions

例如,用户可以访问特定类型的对象,而同时不能访问此类型的多个成员。对于另一个示例,可以拒绝访问特定类型的对象,而仅允许访问其成员的严格列表。您可以将“成员”值设置为一个字符串,该字符串是用分号分隔的属性名称列表。在WinForms和ASP.NET应用程序中,CheckedListBoxPropertyEditor简化了的规范成员的值(在组合框中选择成员名称)。

Security_MemberPermissions_Members

您还可以为“成员”权限条目指定条件。当前对象符合条件时,该条目处于活动状态。

Security_MemberPermissions_Criteria

注意
  • 移动应用程序不提供用于修改成员名称列表或条件的特殊“属性编辑器”,因此您只能将它们输入或修改为字符串。请注意,XAF不会验证这些属性名称和条件。
  • 创建(但尚未保存)新对象时,“成员”权限不会影响编辑器的启用/禁用状态。但是,将在保存时正确处理权限。您可以使用“条件外观模块”来禁用新对象的必需编辑器。

一对多和多对多协会的许可

安全系统如果指定了另一侧自动配置关联的一侧权限。“关联对象的权限”主题描述了此行为。您还可以指定关联双方的权限。有关此方法的更多信息,请参考如何:手动配置关联集合的权限和参考属性主题。

参考属性访问

为了确定获得基准性能如是否AssignedTo和诸如复合参考属性AssignedTo.Name被允许时,安全系统检查(在属性路径)当前类型的类型的权限,参考属性类型的类型的权限,和每个成员的成员的权限。例如,当调用CanWrite <T>(SecurityStrategy,String)方法以确定当前用户是否可以修改AssignedTo.Name属性时,安全系统将检查以下操作:

  • 当前类型的“读取”操作;
  • 当前类型的AssignedTo属性的“读取”操作;
  • 引用类型的“读取”操作;
  • 引用类型的Name属性的'Write'操作。

限制非持久类型访问

非永久对象类型不包括在“类型”权限列表中,并且所有人都可以访问。将非持久对象类型添加到静态SecurityStrategy.AdditionalSecuredTypes集合中,以将该类型包括在“类型”权限列表中。

SecurityStrategy.AdditionalSecuredTypes.Add(typeof(ValidationResults));
SecurityStrategy.AdditionalSecuredTypes.Add(GetType(ValidationResults))
注意

非永久类型仅支持“类型”和“成员”权限,并且安全系统仅在UI级别应用这些权限。有关此模式及其限制的更多信息,请参考客户端安全性(2-层体系结构)-UI级别模式主题。

检查代码中的安全权限

使用静态SecuritySystem类向安全系统发出请求,并检查代码中的权限。请参阅“在代码中访问安全系统”主题中的示例。

请参阅以下主题,以获取有关安全性自定义的更多信息:

相关文章

转载保留此链接,注明出处