Spring Security @Secured注释和Scala控制器

时间:2013-02-20 14:27:15

标签: java spring scala spring-security annotations

在混合的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配置已打开。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

在Spring 4 / Spring中,您必须启用proxyTargetClass = true才能使用CGLIB类代理。使用scala时,这优于java类Proxying。

SpringBoot

@EnableGlobalMethodSecurity(securedEnabled = true, proxyTargetClass = true)