解决shiro重定向URL中出现sessionID的情况localhost:8080/toLogin;jsessionid=D5C1EE61B97EE2D7098F58A837B82BD4

先直接说解决办法:
直接在shiro配置类中添加一下代码就能解决:

@Configuration
public class MyShiroConfig {
    /**
     * 解决shiro的URL中出现sessionID的情况
     * EG: localhost:8080/toLogin;jsessionid=D5C1EE61B97EE2D7098F58A837B82BD4
     * @return
     */
    @Bean
    public DefaultWebSessionManager sessionManager() {
        DefaultWebSessionManager defaultWebSessionManager = new DefaultWebSessionManager();
        defaultWebSessionManager.setSessionIdUrlRewritingEnabled(false);
        return defaultWebSessionManager;
    }
}

然后将该bean注入到DefaultWebSecurityManagerbean中即可,一下是完整写法:

@Bean(name = "securityManager")
    public DefaultWebSecurityManager defaultWebSecurityManager(@Qualifier("realm") MyRealm myRealm, @Qualifier("webSessionManager") DefaultWebSessionManager sessionManager) {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(myRealm);
        securityManager.setSessionManager(sessionManager);
        return securityManager;
    }
/**
     * 解决shiro的URL中出现sessionID的情况
     * EG: localhost:8080/toLogin;jsessionid=D5C1EE61B97EE2D7098F58A837B82BD4
     * @return
     */
    @Bean
    @Qualifier("webSessionManager")
    public DefaultWebSessionManager sessionManager() {
        DefaultWebSessionManager defaultWebSessionManager = new DefaultWebSessionManager();
        defaultWebSessionManager.setSessionIdUrlRewritingEnabled(false);
        return defaultWebSessionManager;
    }

添加后重启项目就会生效,URL中不会出现类似;jsessionid=D5C1EE61B97EE2D7098F58A837B82BD4的sessionID信息

关于这个问题是怎么出现的,可以大致这样理解:
1、当访问localhost:8080/,测试shiro进行拦截发现还没登录,则shiro则会在内部进行一个重定向到localhost:8080/toLogin
2、但是server服务器并不知道是shiro的重定向,重定向的请求中没有session、cookie等信息,服务器就会以为是客户端禁用了该功能,所以服务器就自动为其分配一个sessionid
3、所以响应到客户端的url就被添加上了sessionid

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值