去除jessionid时shiro设置sessionIdUrlRewritingEnabled报错,超级坑

简介: 使用shiro进行权限认证时,登录地址第一次访问总是自动携带JESSIONID,现在需要把它去掉不能显示。

项目场景:

使用shiro进行权限认证时,登录地址第一次访问总是自动携带JESSIONID,现在需要把它去掉不能显示。


问题描述:

首先翻遍百度发现大多数解决方案就是在DefaultWebSecurityManager注入时设置sessionManager。该方法还需要 shiro 1.3.2以上才行,巧了我的1.3.0肯定不行,直接去pom改下版本号。

注解方式:

    @Bean
    public DefaultWebSessionManager sessionManager(){
        DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
        sessionManager.setSessionIdUrlRewritingEnabled(false);
        return sessionManager;
    }
    @Bean
    public DefaultWebSecurityManager securityManager(){
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setSessionManager(sessionManager());
        return securityManager;
    }


xml方式:

    <bean id="sessionManager" class="org.apache.shiro.web.session.mgt.DefaultWebSessionManager">
    <property name="sessionIdUrlRewritingEnabled" value="false"/>
  </bean>
  <!-- Shiro安全管理器 -->
  <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
    <property name="sessionManager" ref="sessionManager"/>
  </bean>


xml方式记得加包扫描,我的:

<context:component-scan base-package="config" />


然后运行项目,报错和之前一样,反正就是没有getter方法。


原因分析:

在debug时,发现项目里有三个版本的shiro,有两个是其他模块的,所以就没管,但是debug时发现行数对不上,下了源码后,发现this.sessionIdUrlRewritingEnabled = true;这行都打不上断点,然后rebuild项目,mvn clean install重新打包,重启idea都用上了,然后能打断点了,但是debug开始后,断点图标又变成圆圈斜杠,根本不是进的我当前项目的shiro版本。

最后只能猜测是不是多版本同时存在有什么问题。


解决方案:

发现三个版本中,有个版本为很老的1.2.4,但是整个项目根本没地方引入,然后看仓库还是shiro-all的方式引入的,于是暂时修改下名字,运行项目后果然能跑了!!!

3b87db8ebe7c43f897317e58bee914e0.png



最后百度发现shiro最好不要直接引入all,按需引入,不然在maven会出问题,参考链接:http://www.nutz.cn/yvr/t/5alnnrtujchnup2ul0fe5eidf0


坑的要死,搞了几小时!!!


目录
相关文章
|
6月前
PageHelper分页插件拼接动态排序语句
PageHelper分页插件拼接动态排序语句
224 0
|
6月前
|
SQL Java 数据库连接
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
735 0
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
|
6月前
|
Java 数据库 数据安全/隐私保护
【SpringBoot】Validator组件+自定义约束注解实现手机号码校验和密码格式限制
【SpringBoot】Validator组件+自定义约束注解实现手机号码校验和密码格式限制
608 1
|
5月前
|
easyexcel
EasyExcel写入内容匹配不上解决方法
EasyExcel写入内容匹配不上解决方法
|
5月前
分享JavaWeb中filter过滤器的案例妙用 - 脏话过滤/编码过滤/代码过滤
分享JavaWeb中filter过滤器的案例妙用 - 脏话过滤/编码过滤/代码过滤
33 0
|
存储
​SpringSecurity-7-自定义AuthenticationProvider实现图形验证码
上一章节我们介绍了如何使用过滤器(Filter)实现图形验证,这是属于Servlet层面,比较简单容易理解。那么这次我们介绍SpringSecurity提供的另一种比较高端的实现图形化验证码,这就是AuthenticationProvider自定义认证。
157 0
关于Shiro的标签应用
关于Shiro的标签应用
boot 中自定义shiro过滤器的拦截顺序
@boot 中filter SecurityUtils.getSubject()No SecurityManager accessible
337 0
boot 中自定义shiro过滤器的拦截顺序
|
数据库 数据安全/隐私保护
【Shiro】3、Shiro实现自定义密码验证规则
我们在使用 Shiro 实现登录的时候,我们只需要将账号、密码,Shiro 会自动判断账户、密码是否正确,那么 Shiro 怎么会知道我们的密码加密规则呢?所以我们需要自定义密码的加密规则
227 0
|
SQL JSON Java
Mybaties(十五) 分页插件使用, 参数校验以及全局异常处理
这里是Mybaties中高级应用了, 基于Mybaties+Springboot实现分页, 参数校验以及全局异常(干货满满!!!)