【发布时间】:2012-03-05 08:38:05
【问题描述】:
grails 的 Spring Security ACL 插件默认使用具有 4 个基本权限的 BasePermission 类。并使用 DefaultFactory 分配此权限。以及分配此 DefaultFactory 的 AclPermissionEvaluator。
当使用这种方法时,一切都很好。我可以使用
@PreAuthorize("hasPermission(#report, read)")
在这里,我提供了一种称为 READ 的基本权限,它在 BasePermission 类中定义。
我需要的是我自己的自定义权限。 我已经完成了:
public class MyPermission extends AbstractPermission{
public static final Permission APPROVE= new MyPermission(1 << 0, 'a');
//constructors here..
}
1) 如何正确分配我的自定义权限以使用它,就像我使用来自 BasePermission 的权限一样? 2)我应该定义我的CustomFactory还是可以使用DefaultFactory? 3)如果是,如何将其设置为现有的权限评估器?
还有另一个悬而未决的问题。我玩过 BasePermission 的子类,但在这种情况下我应该使用
@PreAuthorize("hasPermission(#report, 'approve')")
而不仅仅是
@PreAuthorize("hasPermission(#report, approve)")
4)为什么在没有单引号的情况下出现错误?
Class:org.springframework.expression.spel.SpelEvaluationException
Message:EL1008E:(pos 28): Field or property 'approve' cannot be found on object of type 'org.springframework.security.access.expression.method.MethodSecurityExpressionRoot'
提前致谢!
【问题讨论】:
标签: spring grails permissions acl