自定义访问验证器
可以使用自定义访问验证器向给定对象类中添加权限检查。例如,您可能需要首先访问另一个业务对象,然后才能创建某个给定对象。由于无法通过“策略管理”实用程序来轻松执行此类访问控制,因此您可以创建一个自定义验证器来执行这一检查。
还可以创建自定义验证器来覆盖出厂验证器,这可以移除附加的出厂访问检查。例如,如果厂商门户功能要对所有厂商限制出厂访问,则这个验证器将非常有用,但是客户可能希望对特定厂商放宽规则。
自定义访问验证器不会移除或绕过在“策略管理”实用程序中配置的规则。这些验证器仅用于添加或移除基于业务规则的访问控制。
要为 PTC FlexPLM 对象提供自定义访问控制验证器,必须执行以下操作:
1. 创建 Java 类验证器。
2. 注册验证器。
创建验证器
创建一个用于扩展 DefaultACLValidator Flex 类的 Java 类。通过提供您自己的访问验证器,即可替换掉任何出厂验证器。例如,现有的 LCSMeasurementsACLValidator Flex 类具有一种逻辑,可在 LCSPointsOfMeasure 对象的类型为“LIBRARY”且用户不在版型集管理员组的情况下防止删除此类对象。
如果不希望包括现有的 Flex 验证,请扩展现有验证器 (而非 DefaultACLValidator ) 并在必要时使用 super 调用。
您可以覆盖七种方法以提供自己的逻辑:
• 与访问类型对应的四种方法:
◦ hasViewAccess(WTObject)
◦ hasCreateAccess(WTObject)
◦ hasModifyAccess(WTObject)
◦ hasDeleteAccess(WTObject)
在调用这些方法之前,系统确定用户是否具有“策略管理”实用程序中所定义的访问权限。用户必须能够访问正在检查的对象类型。如要获得创建、修改和删除的访问权,用户必须具有查看访问权。这些检查不属于出厂访问验证器,并且无法被覆盖。
• 为已通过的访问类型确定访问权的方法:hasAccess(WTObject, AccessPermission)
• ClientModels 用来确定用户是否具有管理访问权的两种方法:
◦ hasAdminAccess()
◦ hasAdminAccess(String adminGroupName)
注册验证器
要注册验证器,请使用以下格式将某个属性添加到 custom.lcs.properties。
ACLValidatorFactory.validatorOveride.<FlexClassName>=<ValidatorClassName>
以下是 LCSColor 属性的示例:
ACLValidatorFactory.validatorOveride.com.lcs.wc.color.LCSColor=com.myco.LCSColorValidator