是否有可能在Spring Boot中集成Spring管理的Hibernate拦截器(http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch14.html)?
我正在使用Spring Data JPA和Spring Data REST,并且需要一个Hibernate拦截器来对实体上的特定字段进行更新.
使用标准JPA事件,不可能获得旧值,因此我认为我需要使用Hibernate拦截器.
hibernate spring-data spring-data-jpa spring-data-rest spring-boot
我想使用Spring Security保护我的服务层.正如文档中所解释的,我需要使用一个MethodSecurityInterceptor来检查是否允许方法调用.
要确定是否允许给定用户进行服务方法调用,影响调用方法(使用MethodSecurityMetadataSource)所需的角色对我来说是不够的,因为它还取决于传递给方法的参数.正如文档中所建议的,我可以编写自定义AccessDecisionVoter并通过安全对象访问参数(MethodInvocation在本例中).
但是,我的授权逻辑在方法上是不同的.例如,多个方法之间的参数可能不同,授权逻辑也不同.
我看到两个选择:
AccessDecisionVoter来确定要使用的调用方法和授权逻辑,但它似乎是一个丑陋的解决方案.MethodSecurityInterceptor每个方法定义一个安全.根据Spring文档,a MethodSecurityInterceptor用于保护许多方法,因此它让我觉得还有另一种方法.方法调用(使用AfterInvocationProvider)后的访问决策存在同样的问题.
有哪些替代方案?