为什么spring session 浏览器的cookie中sessionid和服务端获取的sessionid不一样,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
浏览器cookie里存的sessionId是经过base64编码过的,而服务器上获取的sessionId是没有编码的。cookie里的解码后与服务器上其实是一致的。这里的关键是spring session 在设置cookie的时候设置的,可以看源码 DefaultCookieSerializer 类里面的writeCookieValue 方法,里面有关键的一段代码
Cookie sessionCookie = new Cookie(this.cookieName, this.useBase64Encoding?base64Encode(actualCookieValue) : actualCookieValue);
而在类的成员变量里面是直接指定了
private boolean useBase64Encoding = true;
解决方案:直接注入这个类去取代就可以了
@Bean public DefaultCookieSerializer getDefaultCookieSerializer(){ DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer(); cookieSerializer.setUseBase64Encoding(false); return cookieSerializer; }
关于为什么spring session 浏览器的cookie中sessionid和服务端获取的sessionid不一样问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
原创文章,作者:kirin,如若转载,请注明出处:https://blog.ytso.com/219693.html