我想创建一个类,该类添加用于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
。
例如:
@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;
}
问题内容: 注释如何与Java一起使用?以及如何创建这样的自定义注释: 基本上,我需要保留的POJO在持久化时像这样进行序列化: 这样,实际的生成/持久对象是这样的: 任何想法如何实现这一点? 问题答案: 如果创建自定义注释,则必须使用此处的 API 示例进行处理。您可以参考如何声明注释。 这是Java中的示例注释声明的样子。 并被称为。 表示您想在运行时保留注释,并且可以在运行时访问它。 表示您
我正在使用Hibernate@NotNull验证器,我正在尝试创建自定义消息来告诉用户哪个字段在空时产生了错误。类似这样的东西: (这将在我的ValidationMessages.properties文件中)。 其中,{0}应该是通过以下方式传递给验证程序的字段名: 我有办法做到吗?
我想用java为创建自定义注释。我想用这个注释比较两个字符串值,比较后会返回一个
如何从注释中提取操作和对象参数? 如何解析对象定义中的SpEL表达式并将对象作为'act'参数传递?
问题内容: 在StackOverflow上有很多类似的问题,但是我找不到任何答案:( 我有像这样的web.xml: 并尝试使用注释配置方法安全性。如我所见,在我看来,它必须由放置在与其他组件相同的上下文中。所以我有以下内容: 和: 添加所有控制器后停止工作的问题。我在日志中有以下内容: 当我删除此元素时,一切正常。如果我将其添加到-没有任何变化。似乎没有使用它,因为任何人都可以使用带有(或任何其他
如何计算方面中的Spring Security表达式?我想我可以很容易地使用完成这项工作的类I spring框架