EPR类企业管理系统

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


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

如何:手动配置关联集合和参考属性的权限

安全系统如果指定了另一侧自动配置关联的一侧权限。“关联对象的权限”主题描述了此行为。您还可以指定关联双方的权限。本主题描述了当用户具有对该集合中的对象的只读访问权限时,如何手动允许从集合中链接和取消链接对象。在这里,假设您具有:

关键概念是,您应授予对关联两侧的集合属性的“写”访问权限,以允许进行链接和取消链接操作。这些操作总是导致修改两个集合。这就是为什么单方面授予Write不足的原因。

注意

在此示例中,演示了多对多关联。但是,您可以对一对多关联使用相同的方法。

请按照以下步骤设置具有对Projects的只读访问权但可以修改Employee.Projects集合的安全角色。

  1. 在重写的ModuleUpdater.UpdateDatabaseAfterUpdateSchema方法(位于模块项目的Updater.csUpdater.vb)文件中)中,创建一个用户角色。对于此角色,授予对Employee对象的完全访问权限,并授予对Project对象的只读访问权限。

    PermissionPolicyRole role = ObjectSpace.CreateObject<PermissionPolicyRole>();
    role.Name = "User role";
    role.AddTypePermission<Person>(SecurityOperations.CRUDAccess, SecurityPermissionState.Allow);
    role.AddNavigationPermission("Application/NavigationItems/Items/Default/Items/Employee_ListView", SecurityPermissionState.Allow);
    role.AddTypePermission<Project>(SecurityOperations.ReadOnlyAccess, SecurityPermissionState.Allow);
    
  2. 当前,角色为“用户”角色的用户无法链接或取消链接Project对象。链接或取消链接Project对象会导致对Employees属性的修改,这是只读的,因为Project对象是只读的。解决方案是授予对此属性的“写”访问权限。

    role.AddMemberPermission<Project>(SecurityOperations.Write, "Employees", "", SecurityPermissionState.Allow);
    
  3. 添加与先前步骤中配置的角色关联的用户。

    PermissionPolicyUser user = ObjectSpace.CreateObject<PermissionPolicyUser>();
    user.UserName = "User";
    user.SetPassword("");
    user.Roles.Add(role);
    
  4. 运行该应用程序,以“用户”身份登录,并确保可以将Project对象链接到Employee.Projects集合。

    Associations_ManyToMany_LinkUnlinkReadonlyObjects

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