shiro注解不起作用:shiro进行权限校验时,@RequireRoles(“admin“)注解不起作用的解决方法

news2024/12/26 21:59:08

今天在写前后端分离项目时,用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 {
    
    @Resource
    private 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.coloradmin.cn/o/2036285.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Introduction to Snapdragon Profiler (Snapdragon 分析器)

Introduction to Snapdragon Profiler {Snapdragon 分析器} 1. Snapdragon Profiler2. Release Notes3. Tools and resourcesReferences Snapdragon Profiler (骁龙分析器) https://www.qualcomm.com/developer/software/snapdragon-profiler Snapdragon Profiler Documentati…

HAProxy基本配置及参数实操

目录 ​编辑什么是负载均衡 为什么用负载均衡 四层和七层的区别 实验环境 实验步骤 webserver上安装nginx 启动nginx 安装haproxy 编辑配置文件 多进程 多线程 SORRY SERVER 访问重定向 maxconne最大可承受连接 socat 工具 常用示例 ha p r ox y 的 算 法 静 …

思科静态路由配置1

#路由协议实现# #任务一静态路由配置1# #1配置Switch-A的名称及其接口IP地址 Switch>enable Switch(config)#hostname Switch-A Switch-A(config)#ip routing Switch-A(config)#int f0/1 Switch-A(config-if)#no switchport Switch-A(config-if)#ip add 192.168.10…

leetcode日记(72)最大矩形

依旧是看了答案才知道大概方法…太难想到了 和上一道题思路相似&#xff01;可以直接调用上题的函数&#xff0c;只不过调用前的准备非常难想到&#xff0c;就是建造形状相同的矩阵&#xff0c;第i行j列的元素是i行中j列前相邻的“1”的个数。 class Solution { public:int m…

RS®ZN-Z8x 开关矩阵

R&SZN-Z8x 开关矩阵 专为多端口矢量网络分析仪测量而设计 R&SZN-Z8x 开关矩阵经过优化设计&#xff0c;专门用于罗德与施瓦茨的矢量网络分析仪。这款经济高效的多方位解决方案可用于多端口设备或多个设备的简单和复杂的测量任务。开关矩阵支持宽频率范围&#xff0…

北斗科技助力运动健身:开启智能健身新篇章

近年来&#xff0c;随着科技的迅猛发展&#xff0c;智能化设备已逐渐渗透到健身领域&#xff0c;为运动健身爱好者带来了无尽的利好。作为中国自主研发的全球卫星导航系统&#xff0c;北斗定位技术凭借其高精度和可靠性&#xff0c;正在成为运动健身领域的新宠。本文将深入探讨…

Git相关教程

版本控制 学习目标 理解版本控制的必要性了解常用的版本控制方式熟悉 Git 的使用方法 什么是版本控制 可以把一个版本控制系统理解为一个“数据库”&#xff0c;在需要的时候&#xff0c;它可以帮你完整地保存一个项目的快照。当你需要查看一个之前的快照&#xff08;称之为…

Vue3 el-table里input设置为必填

Vue3 el-table里input设置为必填 Vue3 el-table里input设置为必填页面效果实现代码 Vue3 el-table里input设置为必填 页面效果 实现代码 <template><el-form :model"tableData" ref"formRef"><el-table :data"tableData" style…

MPU6050详细介绍

一、MPU6050介绍 MPU6050是由三个陀螺仪和三个加速度传感器组成的6轴运动处理组件 内部主要结构&#xff1a;陀螺仪、加速度计、数字运动处理器DMP&#xff08;Digital Motion Processor&#xff09; MPU6050有两个IIC接口&#xff0c;第一IIC接口可作为主接口给单片机传输数…

对信/ 对信开源系统+后台+PC+H5 (多圈)

系统商标名称&#xff1a;对信 核心&#xff1a;PHP8.0 CodeIgniter4框架 后台管理&#xff1a;PHP&#xff0c;html&#xff0c;jquery&#xff0c;迅锐&#xff0c;css3 PAI接口&#xff1a;php生成json格式 电脑PC端&#xff1a;html&#xff0c;jquery&#xff0c;css…

数据结构 之 常见的树

文章目录 树的概念术语&#xff08;以二叉树举例&#xff09; 二叉树遍历满二叉树完全二叉树二叉搜索树&#xff08;有序二叉树&#xff09; 哈夫曼树术语补充WPL的比较&#xff08;直接上图&#xff09;哈夫曼树的构建过程哈夫曼编码 非平衡树 & 平衡树(avl树)非平衡树转平…

无人机之飞行过程天气影响篇

在无人机飞行中&#xff0c;风速、雨雪等天气条件是飞手必须考虑的重要因素。这些天气条件不仅会影响飞行的稳定性&#xff0c;还可能带来安全隐患。以下是风速及雨雪对无人机飞行的影响&#xff0c;以及飞行中的注意事项&#xff1a; 一、风速对无人机飞行的影响 风力较大时&…

写歌准备:设计歌曲的段落结构的方法,记录和分享一些想法与感悟

我们都知道歌曲的三大元素&#xff1a;旋律、和声、节奏。但若要正式完成一首完整的作品&#xff0c;还要加上有计划的编曲。就像画画一样&#xff0c;除了有创造主题&#xff0c;还要懂得构图。 编曲其中一个重要步骤就是规划歌曲的「段落」。职业编曲/作曲人甚至会基于商业考…

基于NXP IMX8M + FPGA体外诊断POCT设备

体外诊断POCT设备 随着人口老龄化和对健康的重视程度不断提高&#xff0c;POCT&#xff08;即时检验&#xff09;作为IVD&#xff08;体外诊断&#xff09;的细分领域&#xff0c;市场规模持续增加。POCT&#xff08;point-of-care testing&#xff09;即时检验&#xff0c;指…

ReactNative进阶(五十四):真机运行报错 “No bundle URL present“解决方案

文章目录 一、前言二、问题分析三、走近 main.jsbundle 一、前言 rn项目热部署时iphone设备弹出如下错误弹窗&#xff1a;No bundle URL present 遇到以上问题&#xff0c;需要手动生成ios下的main.jsbundle文件。但是使用另一台MacBook Pro 就没有类似问题。 二、问题分析 …

14.2 Pandas数据处理

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

DIfy中集成magic-pdf实现文档解析agent与多模态大模型图文问答

大模型相关目录 大模型&#xff0c;包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步&#xff0c;扬帆起航。 swift与Internvl下的多模态大模型分布式微调指南&#xff08;附代码和数据&#xff…

Windows Server 2008至2016远程桌面_SSL/TLS漏洞(CVE-2016-2183)修复步骤详解

文章目录 Windows Server 2008至2016远程桌面_SSL/TLS漏洞&#xff08;CVE-2016-2183&#xff09;修复步骤详解1 漏洞说明2 修复办法2.1 打开“本地组策略编辑器”2.2 编辑“SSL密码套件顺序”2.3 修改SSL密码套件算法2.4 重启服务器 Windows Server 2008至2016远程桌面_SSL/TL…

万字详述haproxy高可用

目录 写在前面 1、Haproxy简介 2、Haproxy的安装和基本配置信息 2.1、haproxy的安装 2.2haproxy的基本配置信息 2.2.1基本配置文件global参数 2.2.2基本配置文件proxys的相关参数 2.2.2.1 default的相关参数 2.2.2.2 frontend的相关配置 2.2.2.3 backend的相关配置 …

bert-base-chinese模型的完整训练、推理和一些思考

前言 使用google-bert/bert-base-chinese模型进行中文文本分类任务&#xff0c;使用THUCNews中文数据集进行训练&#xff0c;训练完成后&#xff0c;可以导出模型&#xff0c;进行预测。 项目详细介绍和数据下载 数据集下载地址 Github完整代码 现记录训练过程中的一些感悟…