可能重复:
How to create custom methods for use in spring security expression language annotations
我希望在@PreAuthorize
中使用自定义方法,例如:
@PreAuthorize("canPlayGolf(something,something)")
为此,我创建了MethodSecurityExpressionRoot
的副本(不能将其子类化,因为它在 Spring Security 3.0.6 中具有包访问权限)并在那里添加我的自定义函数。我需要在MethodSecurityExpressionHandler
中使用这个自定义表达式根,但由于它硬编码MethodSecurityExpressionRoot
,我将其子类化为使用我的自定义表达式root(我必须创建MethodSecurityEvaluationContext
的副本,因为我必须在我的覆盖createEvaluationContext
中使用它并且它再次具有包访问权限。)
最后,我无法弄清楚如何在ExpressionBasedPreInvocationAdvice
中连接自定义表达式处理程序,以便我可以在@PreAuthorize
中使用自定义表达式