在Springboot环境中继承Shiro时,使用注解@RequiresPermissions时无效。
@ApiOperation(value = "分页查询", notes = "分页查询")
@GetMapping("/list")
@RequiresPermissions("system:user:list")
@ResponseBody
public ResultTable list(Tablepar tablepar){
PageInfo<TsysUser> page=sysUserService.list(tablepar) ;
return pageTable(page.getList(),page.getTotal());
}
解决方法:需要开启Shiro注解。在ShiroConfig类中添加如下代码。
/**
* 开启Shiro的注解(如@RequiresRoles,@RequiresPermissions)
* 配置以下两个bean(DefaultAdvisorAutoProxyCreator和AuthorizationAttributeSourceAdvisor)即可实现此功能
* @return
*/
@Bean
public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator(){
DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
advisorAutoProxyCreator.setProxyTargetClass(true);
return advisorAutoProxyCreator;
}
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager){
AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
return authorizationAttributeSourceAdvisor;
}
注意:
1,添加的两个方法上要加@Bean注解
2,authorizationAttributeSourceAdvisor(SecurityManager securityManager)中的参数securityManager不要忘记