Springboot Shiro anno不启作用问题及解决

 更新时间:2026年03月13日 08:45:19   作者:Press777  
在Shiro配置中遇到静态资源被拦截的问题,通过排除LinkedHashMap过滤次序和将过滤器手动创建而不是注册到容器中解决,同时,确保JwtUtil类也不注册到容器中,以避免请求报Not authorized错误

1. 分析

之前在Shiro中没有配置过静态资源过滤,这次在配置过程中给予静态资源anno发现还是会被拦截,查阅其它文章,基本上都是在说LinkedHashMap 过滤次序问题,但我最初就是这个,因此排除。

后再翻阅相关文章的时候,看到了一位博主在文章中说不要将过滤器注册到容器中即可,自己手动创建过滤器!!

然后查看我的代码,果然将过滤器注册到了容器中,将其拿掉,然后在shiroconfig@Autowired JwtFilter jwtfilter 改成 new JwtFilter()即可。

2. 具体代码

@Bean
    public ShiroFilterChainDefinition shiroFilterChainDefinition() {
        DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
        Map<String, String> filterMap = new LinkedHashMap<>();

        // swagger2页面
        filterMap.put("/swagger-ui.html", "anon");
        filterMap.put("/swagger/**", "anon");
        filterMap.put("/swagger-resources/**", "anon");
        filterMap.put("/v2/**", "anon");
        filterMap.put("/webjars/**", "anon");
        filterMap.put("/webjars.bycdao-ui/**", "anon");
        filterMap.put("/configuration/**", "anon");
        filterMap.put("/doc.html", "anon");

        filterMap.put("/**", "jwt"); // 主要通过注解方式校验权限

        chainDefinition.addPathDefinitions(filterMap);
        return chainDefinition;
    }

    @Bean("shiroFilterFactoryBean")
    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager,ShiroFilterChainDefinition shiroFilterChainDefinition) {
        ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
        shiroFilter.setSecurityManager(securityManager);
        Map<String, Filter> filters = new HashMap<>();
        // ---------------------------------------------------
        filters.put("jwt", new JwtFilter()); // 修改处
        shiroFilter.setFilters(filters);
        Map<String, String> filterMap = shiroFilterChainDefinition.getFilterChainMap();
        shiroFilter.setFilterChainDefinitionMap(filterMap);
        return shiroFilter;
    }

若在JwtFilter 使用到JwtUtil类判断tk是否过期等,而JwtUtil 同样不要注册到容器中,不然可能请求会报错

Not authorized to invoke method

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java 虚拟机内存模型深入分析

    Java 虚拟机内存模型深入分析

    本文将详细讲解JVM内存模型中的几个重要部分,主要围绕程序计数器、方法区、常量池等内容进行深入分析,帮助读者理解JVM内存如何分配、管理和回收,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • mybatis中关于in的使用方法及说明

    mybatis中关于in的使用方法及说明

    这篇文章主要介绍了mybatis中关于in的使用方法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • 浅谈java获取UUID与UUID的校验

    浅谈java获取UUID与UUID的校验

    这篇文章主要介绍了java获取UUID与UUID的校验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Kotlin 基础教程之泛型

    Kotlin 基础教程之泛型

    这篇文章主要介绍了Kotlin 基础教程之泛型的相关资料,需要的朋友可以参考下
    2017-06-06
  • 在 Spring Boot 中连接 MySQL 数据库的详细步骤

    在 Spring Boot 中连接 MySQL 数据库的详细步骤

    本文介绍了SpringBoot连接MySQL数据库的流程,添加依赖、配置连接信息、创建实体类与仓库接口,通过自动配置实现数据库操作,并提供API测试方法及常见问题解决方案,感兴趣的朋友跟随小编一起看看吧
    2025-08-08
  • Mybatis中Mapper标签总结大全

    Mybatis中Mapper标签总结大全

    这篇文章主要介绍了Mybatis中Mapper标签总结大全,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • java基础学习笔记之泛型

    java基础学习笔记之泛型

    所谓泛型,就是变量类型的参数化。泛型是JDK1.5中一个最重要的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小的抛出ClassCastException的可能。在JDK1.5中,你可以声明一个集合将接收/返回的对象的类型。
    2016-02-02
  • 深入浅析 Spring Security 缓存请求问题

    深入浅析 Spring Security 缓存请求问题

    这篇文章主要介绍了 Spring Security 缓存请求问题,本文通过实例文字相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-04-04
  • Java使用FileOutputStream写Excel文件不落盘的解决方法

    Java使用FileOutputStream写Excel文件不落盘的解决方法

    最近在写 Java 代码处理 Excel 文件的时候,遇到了一个挺头疼的问题:使用 Apache POI 的 XSSFWorkbook.write(FileOutputStream) 方法写文件,生成的 Excel 文件却打不开,所以本文就给大家介绍了Java使用FileOutputStream写Excel文件不落盘的解决方法
    2025-11-11
  • Java根据前端传回的图片生成pdf并且加密码和水印

    Java根据前端传回的图片生成pdf并且加密码和水印

    这篇文章主要为大家详细介绍了java如何根据前端传回的png图片数组,后端加水印加密码生成pdf并返回给前端,感兴趣的小伙伴可以参考一下
    2025-01-01

最新评论