2

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

4

1 回答 1

0

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

SpringBoot

@EnableGlobalMethodSecurity(securedEnabled = true, proxyTargetClass = true)
于 2016-08-05T03:48:47.140 回答