springboot2.0+shiro1.4.0权限过滤不生效问题

1 篇文章 0 订阅
1 篇文章 0 订阅

之前一直使用spring+springmvc+hibernate+shiro框架,shiro用来控制管理后台的认证和权限问题,全部配置在xml文件中,没有任何问题。

最近切到springboot2.0,使用注解方式配置shiro后发现,配置为第1条规则的登录页的匿名访问总是被拦截为需要权限。

shiro具体配置和详细说明就不放了,以下是我的关键配置:

 

既然权限可以拦截到,说明shiro是生效的。

然后确认filterChainDefinitionMap使用有序集合LinkedHashMap,按理说应该是没有任何问题的。

打开org.apache.shiro日志trade,启动,日志如下:

没有发现问题。

 

这里发现了端倪,在shiro核心过滤filter之前有一个authenticationFilter,拦截了所有请求/*。

这个authenticationFilter就是我们上面配置的MyFormAuthenticationFilter,用来处理我们的表单,组装自定义token。

也就是请求还没到shiroFilterFactoryBean的时候先被上面这个拦截了,而他的规则刚好是/admin/*=authc,所以被跳转到无权限了。这不是我们想要的结果。

正常情况下应该只有shiroFilterFactoryBean拦截所有请求,再根据FilterChainManager匹配对应的filter,再进行doFilter()。

所以问题是springboot将本应是shiro的内置过滤器自动配置成了web-filter拦截了所有请求。

 

我的解决办法是把formAuthenticationFilter不注册为Bean,之后测试通过!

可能有别的更好的解决方法,欢迎交流!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于Spring Boot 2.0、Spring Data JPA、Thymeleaf和Shiro开发的后台管理系统可以实现一个功能强大且易于维护的应用程序。 这套技术栈的优势包括: 1. Spring Boot 2.0:它是一个快速构建应用程序的框架,提供自动化配置和减少样板代码的优势,使开发变得更加高效。 2. Spring Data JPA:它是一个基于JPA的持久化框架,通过简化数据库操作和提供对各种数据库的支持,大大减少了开发人员的工作量。 3. Thymeleaf:它是一个服务器端的Java模板引擎,可以直接处理HTML、XML、JavaScript、CSS和文本等内容。它具有易于学习和使用的特点,并且能够与Spring Boot实现良好的集成。 4. Shiro:它是一个功能强大且灵活的Java安全框架,可以提供认证、授权、加密和会话管理等功能。通过集成Shiro,我们可以轻松实现后台管理系统的用户认证和访问控制等安全需求。 基于这套技术栈,我们可以开发一个后台管理系统,实现用户登录、权限管理、菜单管理、角色管理、用户管理等功能。利用Spring Boot的自动化配置和快速启动特性,我们可以快速搭建项目的骨架,并集成Spring Data JPA实现数据访问,利用Thymeleaf开发可复用的页面组件,通过Shiro实现用户认证和授权。 总之,基于Spring Boot 2.0、Spring Data JPA、Thymeleaf和Shiro的后台管理系统,不仅可以极大地提高开发效率,还能够提供丰富的功能和安全性,帮助我们快速构建高质量的应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值