我正在尝试在使用的某些方法中添加控制授权@PreAuthorize("hasRole('ADMIN')").
方法属于实现接口DAO的简单类DaoImpl;我添加了这个
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
到我的安全配置类。
对我来说不起作用,是逻辑问题还是我错过了什么?
答案是否定的
Spring只能在它知道的类上强制注释。为了使spring意识到实例化的类,它需要实例化它们自己,这意味着类需要用spring生命周期注释之一进行注释,例如@Component
,@Service
@RestController
,或者您需要自己实例化它们并将它们交给spring上下文。例如,可以在@Configuration
注释类的@Bean
注释函数中使用new
关键字,然后从@Bean
注释函数返回新创建的类。
如果你在应用程序中随机使用new
关键字来创建类,spring将不会意识到这个类,因此无法使用spring AOP拦截函数调用,从而在它们上强制执行注释,例如@PreAuthorize