如何创建用于Spring安全性表达语言注释的自定义方法
我想创建一个类,该类添加用于Spring安全性表达语言的自定义方法,以通过注释进行基于方法的授权。
例如,我想创建一个自定义方法,例如“ customMethodReturningBoolean”,以这种方式使用:
@PreAuthorize("customMethodReturningBoolean()") public void myMethodToSecure() {
// whatever
}
我的问题是这个。如果可能,我应该子类化什么类来创建我的自定义方法,我将如何在spring xml配置文件中对其进行配置,然后有人给我提供以这种方式使用的自定义方法的示例?
回答:
你需要子类化两个类。
首先,设置一个新的方法表达式处理程序
<global-method-security> <expression-handler ref="myMethodSecurityExpressionHandler"/>
</global-method-security>
myMethodSecurityExpressionHandler
将是的一个子类DefaultMethodSecurityExpressionHandler
,其覆盖createEvaluationContext()
,设置的一个子类MethodSecurityExpressionRoot
的MethodSecurityEvaluationContext
。
例如:
@Overridepublic EvaluationContext createEvaluationContext(Authentication auth, MethodInvocation mi) {
MethodSecurityEvaluationContext ctx = new MethodSecurityEvaluationContext(auth, mi, parameterNameDiscoverer);
MethodSecurityExpressionRoot root = new MyMethodSecurityExpressionRoot(auth);
root.setTrustResolver(trustResolver);
root.setPermissionEvaluator(permissionEvaluator);
root.setRoleHierarchy(roleHierarchy);
ctx.setRootObject(root);
return ctx;
}
以上是 如何创建用于Spring安全性表达语言注释的自定义方法 的全部内容, 来源链接: utcz.com/qa/415092.html