去除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月前
|
SQL Java 数据库连接
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
799 0
MyBatis【源码探究 01】mapper.xml文件内<if test>标签判断参数值不等于null和空(当参数值为0)时筛选条件失效原因分析
|
3月前
|
Java
SpringMVC配置字符过滤器的两种方式
SpringMVC配置字符过滤器的两种方式
42 0
|
5月前
|
easyexcel
EasyExcel写入内容匹配不上解决方法
EasyExcel写入内容匹配不上解决方法
112 0
|
5月前
|
Java Spring 容器
详解java参数校验之:顺序校验、自定义校验、分组校验(@Validated @GroupSequence)
详解java参数校验之:顺序校验、自定义校验、分组校验(@Validated @GroupSequence)
boot 中自定义shiro过滤器的拦截顺序
@boot 中filter SecurityUtils.getSubject()No SecurityManager accessible
345 0
boot 中自定义shiro过滤器的拦截顺序
springMvc18-cookievalue注解(显示cookie的值,默认必须有值
springMvc18-cookievalue注解(显示cookie的值,默认必须有值
73 0
springMvc18-cookievalue注解(显示cookie的值,默认必须有值
|
数据库 数据安全/隐私保护
【Shiro】3、Shiro实现自定义密码验证规则
我们在使用 Shiro 实现登录的时候,我们只需要将账号、密码,Shiro 会自动判断账户、密码是否正确,那么 Shiro 怎么会知道我们的密码加密规则呢?所以我们需要自定义密码的加密规则
229 0
|
SQL JSON Java
Mybaties(十五) 分页插件使用, 参数校验以及全局异常处理
这里是Mybaties中高级应用了, 基于Mybaties+Springboot实现分页, 参数校验以及全局异常(干货满满!!!)
|
SQL JSON Java
Mybaties分页插件使用, 参数校验以及全局异常处理
本文教你快速进行Mybaties分页插件使用, 参数校验以及全局异常处理
|
SQL 前端开发 Java
SpringBoot项目,如何优雅的把接口参数中的空白值替换为null值?
SpringBoot项目,如何优雅的把接口参数中的空白值替换为null值?
SpringBoot项目,如何优雅的把接口参数中的空白值替换为null值?