shiro+jwt登录认证anon配置无效

需求:使用shiro+jwt进行登录认证,希望可以自定义一些不需要认证的接口(登录接口等),其他统统交给jwtFilter进行token认证

原来shiroFilterFactoryBean的配置

@Autowired
JwtFilter jwtFilter;
@Beanpublic ShiroFilterChainDefinition shiroFilterChainDefinition() {DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();Map<String, String> filterMap = new LinkedHashMap<>();filterMap.put("/login/**", "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", jwtFilter); shiroFilter.setFilters(filters);Map<String, String> filterMap = shiroFilterChainDefinition.getFilterChainMap();shiroFilter.setFilterChainDefinitionMap(filterMap);return shiroFilter;}

但是发现这样配置,所有的路径被jwtFilter拦截了,anon失效,头疼。。。
后来在网上搜索,发现这篇文章,问题与我相似。于是跟着他一步一步做。

  1. 修改jwtFilter的注入方式,改用new

    filters.put("jwt", new JwtFilter()); // 这里不能注入的jwtFilter,不然所有路径都被jwtFilter拦截
    

    这样虽然解决了anon失效的问题,但是JwtFilter无法获取到jwtUtils这个工具类

  2. 创建一个 Spring 的上下文管理工具类

    
    @Component
    public class SpringContextUtil implements ApplicationContextAware {private static ApplicationContext applicationContext;@Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {SpringContextUtil.applicationContext = applicationContext;}/*** 获取上下文*/public static ApplicationContext getApplicationContext() {return applicationContext;}/*** 通过 bena 名称获取上下文中的 bean*/public static Object getBean(String name) {return applicationContext.getBean(name);}/*** 通过类型获取上下文中的bean*/public static Object getBean(Class<?> requiredType) {return applicationContext.getBean(requiredType);}
    }
    

    然后在JwtFilter中用以下代码来获取jwtUtils

     if (jwtUtils == null) {jwtUtils = (JwtUtils) SpringContextUtil.getBean("jwtUtils");}
    

虽然问题解决了,但是具体原因还是没搞明白o(╥﹏╥)o,有谁能够指点12!!!

shiro+jwt登录认证anon配置无效相关推荐

  1. SpringBoot整合Shiro实现登录认证和授权CHCache

    文章目录 一. springboot实现普通登录 1 添加依赖 2 编写配置文件 3 新建实体类和mapper 4 编写业务层代码 5 编写控制器 6 编写启动类 7 编写登录页面和主页面 二. sp ...

  2. springboot系列(十)springboot整合shiro实现登录认证

    关于shiro的概念和知识本篇不做详细介绍,但是shiro的概念还是需要做做功课的要不无法理解它的运作原理就无法理解使用shiro: 本篇主要讲解如何使用shiro实现登录认证,下篇讲解使用shiro ...

  3. spring security+jwt 登录认证

    spring security+jwt 登录认证 1.综述 2.版本与环境 3.架构 4.数据库认证逻辑图 5.案例 security+jwt 5.1引入依赖 5.2新建工具类 5.2新建组件类 5. ...

  4. shiro+jwt进行认证和授权的解决方案代码实例

    文章目录 token类 自定义realm 自定义的jwtFilter用于访问拦截: shiroconfig controller vo对象 测试 jwt和shiro框架就不多介绍了,直接上实例代码吧. ...

  5. 傻瓜式使用SpringSecurity完成前后端分离+JWT+登录认证+权限控制

    流程分析 流程说明: 客户端发起一个请求,进入 Security 过滤器链.当到 LogoutFilter 的时候判断是否是登出路径,如果是登出路径则到 logoutHandler ,如果登出成功则到 ...

  6. 登陆认证方案比较(JWT 登录认证 + Token 自动续期)

    概述 用户管理模块会涉及到加密及认证流程,今天就来讲讲认证功能的技术选型及实现. 技术选型 要实现认证功能,很容易就会想到 JWT 或者 session,但是两者有啥区别?各自的优缺点?应该 Pick ...

  7. Shiro+SpringBoot 时,anon配置的匿名路径被拦截,自定义配置类走过的坑

    最开始一直不去自定配置类,究其原因发现是少了: /*** Shiro配置类*/ @Configuration 少了@Configuration,这个注解配置. 一路顺畅的走了下来: 是不是要美滋滋的走 ...

  8. @builder注解_SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证

    一.说明 SpringSecurity是一个用于Java 企业级应用程序的安全框架,主要包含用户认证和用户授权两个方面.相比较Shiro而言,Security功能更加的强大,它可以很容易地扩展以满足更 ...

  9. service获取selinux权限_Spring Boot 整合 Spring Security 示例实现前后分离权限注解 + JWT 登录认证...

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 99套Java企业级实战项目 4000G架构师资料 作者:Sans_ juejin.im/post/5da82f066 ...

最新文章

  1. postman 使用_如何使用Postman实现数据驱动?
  2. js实现表格无缝滚动效果
  3. 如何去除Eclipse Maven插件里关于Managed version的警告消息
  4. 如何在SAP Cloud for Customer里自定义query
  5. oppo专用计算机,OPPO手机助手
  6. Java快速入门学习笔记8 | Java语言中的数组
  7. di-tech2016_2016年Tech最佳愚人节笑话
  8. 横河川仪压力变送器调零_YOKOGAWA/横河EJX110A差压变送器的性能误差和精度介绍...
  9. python编程入门电子书-Python编程从入门到实践PDF电子书
  10. android之去掉空包合并
  11. 基于windows fiber的协程(coroutine)实现
  12. BZOJ1027[JSOI2007] 合金
  13. lammps教程:推荐几个比较实用的lammps自带函数(2)
  14. [UEFI启动教程]移动硬盘安装U盘装机助理(双模式启动)
  15. mark制图软件_mac自带的画图工具在哪?如何使用苹果电脑自带的预览工具进行画图操作...
  16. Docker--一门值得你学习的手艺
  17. 电脑小手图标怎么去除_取消共享文件夹图标上的小手
  18. 小程序——scroll-view 页面不滚动与隐藏导航条
  19. 程序员如何从零开始运营好一个公众号挣点零花钱之公众号定位
  20. 征服c指针_征服C指针.pdf

热门文章

  1. matlab hsi颜色,RGB 颜色空间转 HSI 颜色空间的matlab程序实现
  2. Flash绘画与动画宝典
  3. Maximo安全控制相关表
  4. 蚂蚁金服开发文档中心
  5. 【总结】1361- package.json 与 package-lock.json 的关系
  6. 最新公路测量计算机,公路施工测量坐标计算系统
  7. oracle 19c ORA-00942: 表或视图不存在 ORA-02063: 紧接着 line
  8. workbench设置单元坐标系_浅谈Ansys中的几种坐标系
  9. 控制测量的基本概念总结
  10. 一键加速GitHub、Pypi、DockerHub访问