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

建站之星网站空间根目录中国最新消息新闻

建站之星网站空间根目录,中国最新消息新闻,什么网站ppt做的最好看,信誉好的郑州网站建设今天在写前后端分离项目时,用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.tj-hxxt.cn/news/87678.html

相关文章:

  • 正能量网站窗口免费进新浪体育最新消息
  • 服装厂家东莞网站建设最近刚发生的新闻
  • 如何做超市的网站万网官网域名查询
  • 六安网站自然排名优化价格seo优化
  • 网站规划建设方案农业绿化风格东莞网络营销推广公司
  • 工程造价接单平台seo用什么工具
  • 外贸定制网站广州网络营销
  • 用网站做宣传的方案商务软文写作范文200字
  • 深圳外贸网站推广微信如何投放广告
  • 网站开发得花多少钱广州竞价托管
  • 做测试功能的网站 需要备案吗百度关键词优化排名技巧
  • 医疗网站设计网站公司网络组建方案
  • 贸易公司寮步网站建设极致发烧百度seo2022新算法更新
  • 惠州悦商做网站产品市场推广计划书
  • 怎么做网页版网站百度怎样发布信息
  • 怎么做企业销售网站网站营销方案
  • 桂林北站离阳朔多远网页制作公司哪家好
  • 邯郸网络科技公司黑帽seo优化推广
  • thinphp 做外贸网站网络营销产品的特点
  • 什么自己做网站seo入门教程网盘
  • 网站转出爱站关键词挖掘软件
  • wordpress 学术 模板下载win11优化大师
  • 网站建立之间不安全如何解决seo教程培训班
  • 做单页网站阿里指数数据分析平台官网
  • 长沙做网站找哪家好网络运营培训哪里有学校
  • 企业建设门户网站的需求网站流量分析的指标有哪些
  • 生成flash的网站源码首页关键词排名优化
  • 如何进行一个网站建设快速排名优化公司
  • 河北建设工程信息网查看windows优化大师官方免费下载
  • 在线制作免费生成水印seo关键词优化推广价格