首页 > 解决方案 > @RolesAllowed 干扰 @RequestMapping

问题描述

在 Spring Boot 应用程序中,仅使用注释,我想实现安全性

我在@EnableGlobalMethodSecurity(jsr360Enabled=true)配置类中添加了一个。该类也有@EnableSecurity注释

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

有谁知道可能是什么原因造成的?

标签: javaspring-bootspring-security

解决方案


在@M.Deinum 让我走上这条路之后,我做了一些阅读并做出了解释。如果有人可以详细说明或纠正我更多的技术细节,请感到非常欢迎。

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

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

就我而言,我的控制器实现了一个带有非端点相关方法的接口,所以 spring 忽略了所有处理方法,并且 RequestMappingHandlerMapping 没有找到任何要绑定的方法,因为如果只是“看到”类上的接口方法

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


推荐阅读