如何创建用于Spring安全性表达语言注释的自定义方法

我想创建一个类,该类添加用于Spring安全性表达语言的自定义方法,以通过注释进行基于方法的授权。

例如,我想创建一个自定义方法,例如“ customMethodReturningBoolean”,以这种方式使用:

  @PreAuthorize("customMethodReturningBoolean()")

public void myMethodToSecure() {

// whatever

}

我的问题是这个。如果可能,我应该子类化什么类来创建我的自定义方法,我将如何在spring xml配置文件中对其进行配置,然后有人给我提供以这种方式使用的自定义方法的示例?

回答:

你需要子类化两个类。

首先,设置一个新的方法表达式处理程序

<global-method-security>

<expression-handler ref="myMethodSecurityExpressionHandler"/>

</global-method-security>

myMethodSecurityExpressionHandler将是的一个子类DefaultMethodSecurityExpressionHandler,其覆盖createEvaluationContext(),设置的一个子类MethodSecurityExpressionRootMethodSecurityEvaluationContext

例如:

@Override

public 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

回到顶部