今天有个发现,使用 Shiro 的注解来授权,不注意可能会碰到授权不生效的情况,也就是这俩注解 @RequiresRoles
和@RequiresPermissions
没起作用。
原因很简单,这两个是 Shiro 的注解,我们需要借助 SpringAOP 扫描到它们。
在 ShiroConfig
中配置如下俩方法即可。
@Bean
public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator(){
DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
advisorAutoProxyCreator.setProxyTargetClass(true);
return advisorAutoProxyCreator;
}
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(){
AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
authorizationAttributeSourceAdvisor.setSecurityManager(securityManager());
return authorizationAttributeSourceAdvisor;
}
这个问题比较少见,因为项目中几乎不会使用注解来授权,太分散了。OK,希望以上能解决你的问题。
本文由老郭种树原创,转载请注明:https://guozh.net/shiro-requirespermissions-not-working/