在混合的Java / Scala Spring(v3.2)项目中,我想创建一个基于scala的控制器,并使用@Secure注释来保护它。对于java控制器,这很好用,但是当我将@Secure注释添加到scala控制器时,它会在应用程序启动时从URL映射中消失。
示例代码:
@Controller
@Secured(Array("ROLE_USER"))
class TestController {
@RequestMapping(value = Array("/show"), method = Array(RequestMethod.GET))
def show = {
"helloTemplate"
}
}
如果我为每个方法添加安全注释,则相同 - 整个控制器类将从URL映射中消失(即使存在不安全的方法)。日志中没有例外或警告。如果我通过xml配置中的spring-security intercept-url保护这个URL - 一切正常(在控制器上没有@Secure注释)。通过xml文件和注释驱动配置的Spring和spring-security配置已打开。谢谢你的帮助。
答案 0 :(得分:0)
在Spring 4 / Spring中,您必须启用proxyTargetClass = true
才能使用CGLIB类代理。使用scala时,这优于java类Proxying。
SpringBoot
@EnableGlobalMethodSecurity(securedEnabled = true, proxyTargetClass = true)