@RolesAllowed干扰@RequestMapping

时间:2018-10-01 08:21:17

标签: java spring-boot spring-security

在spring boot应用程序中,我仅使用批注来实现安全性

我已将@EnableGlobalMethodSecurity(jsr360Enabled=true)添加到配置类。班上也有@EnableSecurity注释

现在,当我将@RolesAllowed添加到任何@RestController类时,无论是在方法级别还是在方法级别,启动日志都根本不会列出该类。相反,有一行: 'Rejected bean name (rest controller class): no URL paths identified'

有人知道这是什么原因吗?

1 个答案:

答案 0 :(得分:1)

@ M.Deinum将我设置在路径上后,我做了一些阅读并做了解释。如果有人可以详细说明或在更多技术细节上纠正我,则非常欢迎。

Spring代理类将豆类连接在一起。

    通过使用 CGLib 制作具有附加功能的子类来代理
  • 不实现接口的类
  • 可以实现接口的
  • 类,spring使用动态代理来访问该类的功能,但是这样做只能 代理接口方法。

在我的情况下,我的控制器使用与非端点相关的方法实现了一个接口,因此spring忽略了所有处理方法,并且RequestMappingHandlerMapping找不到任何要绑定的方法,因为如果只“看到”了该类的接口方法

使用@EnableGlobalMethodSecurity(proxyTargetClass=true)会强制使用CGLib,因此完整的方法会被我们的映射器识别。