我可以在一个简单的类(不是@Component)中使用@ preauthorization吗?



我正在尝试在使用的某些方法中添加控制授权@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

相关内容

  • 没有找到相关文章

最新更新