当前位置: 首页 > news >正文

佛山建站网站模板兰州市住房和城乡建设局网站

佛山建站网站模板,兰州市住房和城乡建设局网站,涟源爱沫私人电影院,店铺推广和网站优化一起做今天在写前后端分离项目时,用jwt加shiro进行登录权限校验时,RequireRoles("admin")注解不起作用,记录一下。 前提:数据库里面的user_type代表用户类型 :0普通用户 ;1:专家&#xff1…

今天在写前后端分离项目时,用jwt加shiro进行登录权限校验时,@RequireRoles("admin")注解不起作用,记录一下。

前提:数据库里面的user_type代表用户类型 :0普通用户 ;1:专家;2:管理员

1.JwtReam中的内容:

@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principalCollection) {
//进行权限的认证
String token = (String) principalCollection.getPrimaryPrincipal();
log.info("进入进行权限认证的方法!token为{}", token);
User user = null;
SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
try {Claims decode = JwtUtils.decode(token);String email = (String) decode.get("email");user = userLoginService.getUserInfoByEmail(email);if (user.getUserType() == 2) {simpleAuthorizationInfo.addRole("admin");log.info("为用户添加admin权限");}
} catch (Exception e) {log.info("解析token异常!");// 解析token异常,返回错误信息!
}
log.info("用户类型为{}",user.getUserType());
return simpleAuthorizationInfo;
}

2.controller中的写法

@RestController
@RequestMapping("admin/user/")
@Validated
@Api(tags = "管理员管理用户")
@RequiresRoles(value = "admin",logical = Logical.AND)
public class ManagerUserController {@Resourceprivate UserService userService;@GetMapping("getAllUser")@ApiOperation(value = "获取所有的用户",response = UserInfo.class)public Result<PageResult> getAllUser(PageDto pageDto) {boolean role = SecurityUtils.getSubject().hasRole("admin");log.info("用户是否有权限:{}",role);return userService.getAllUser(pageDto);}
}

3.结论

这里可以看到controller里面加了@RequiresRoles(value = "admin",logical = Logical.AND),用户需要权限才能访问接口,但是并没有生效。看看控制台输出了什么:

   : 进入进行权限认证的方法!token为 。。。。。。: 用户类型为0: 用户是否有权限:false

说明进入了权限认证的方法doGetAuthorizationInfo(PrincipalCollection principalCollection),并且controller里面的方法判断用户是不是有权限,显示用户并没有权限,但是还是进入了方法,并且执行了方法,获取了数据,

说明@RequiresRoles注解并没有生效

4.解决办法 

在ShiroConfig里面加上下面的代码:

//开启对shiro注解的支持
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
advisor.setSecurityManager(securityManager);
return advisor;
}
//开启aop注解支持
@Bean
public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {DefaultAdvisorAutoProxyCreator defaultAAP = new DefaultAdvisorAutoProxyCreator();defaultAAP.setProxyTargetClass(true);return defaultAAP;
}

 这时用户如果没有权限就会下面的报错:

AuthorizationException

可以在全局异常中捕获,返回信息给前端,这里不再演示。

参考链接:https://www.cnblogs.com/tuifeideyouran/p/7696055.html

参考链接:https://www.cnblogs.com/shiguotao-com/p/10617693.html

http://www.yayakq.cn/news/595102/

相关文章:

  • 什么网站备案容易审核花都定制型网站建设
  • 欧美男女直接做的视频网站wordpress 模板 破解
  • 专业商城网站建设价格上海制作网页哪家好
  • 网站推广结束语wordpress网易云插件
  • 松原网站推广wordpress英文主题变中文版
  • 手机网站功能开发方案沭阳网站定制
  • 网站可不可以做自己的专利php网站 源码
  • 低价网站制作企业怎么样开发微信小程序
  • 网站建设常用软件jas全国icp备案查询
  • 山东省住房和城乡建设厅定额站子网站php 怎么做网站超链接
  • 电子商务网站建设作业文档wordpress增加下载功能
  • 郝友做的网站邯郸捕风科技有限公司
  • 开发外贸网站开发郑州seo顾问热狗hotdoger
  • 网站建设需要哪些网络技术网站中搜索关键词
  • 学网站开发月薪多少钱黄岩地区做环评立项在哪个网站
  • 淘宝这种网站怎么做的?营销型网站的建设步骤
  • 小程序开发外包服务合同南安seo教程
  • 网站建设内容规划凌云网最新消息
  • 大型网站的设计婚恋网站排名前十名
  • 做的很漂亮的网站上海网站建设 网页制作
  • 咖啡的网站建设策划书建设网站需要具备什么条件
  • 广州市网站建设 乾图信息科技做一个官方网站多少钱一个
  • 网站建设毕业设计题目海外网站域名注册
  • 网站流量来源哪个网站做螺丝生意好
  • 浙江省建设局城市平台网站wordpress文章不见
  • 网站建设氺首选金手指13长春软件开发
  • 上海建设工程造价网站网站首页优化
  • 动漫网站建设总结辽宁沈阳建设工程信息网
  • 朗读者外国人做的汉字网站中航鑫源建设集团有限公司网站
  • 网站怎么做成二维码做两个阿里网站吗