You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring WebSession如何像HttpSession一样对Session ID进行Base64编码?

让Spring WebSession对Session ID进行Base64编码的方法

Spring WebSession没有像HttpSession的DefaultCookieSerializer那样提供直接启用Base64编码的开关属性,但可以通过自定义WebSessionIdResolver来实现相同效果,具体步骤如下:

1. 自定义Cookie会话ID解析器

继承CookieWebSessionIdResolver,重写编码和解码方法,对Session ID进行Base64编解码处理:

import org.springframework.util.Base64Utils;
import org.springframework.web.server.session.CookieWebSessionIdResolver;

public class Base64EncodedCookieWebSessionIdResolver extends CookieWebSessionIdResolver {

    @Override
    public String encodeSessionId(String sessionId) {
        // 对原始Session ID执行Base64编码
        return Base64Utils.encodeToString(sessionId.getBytes());
    }

    @Override
    public String decodeSessionId(String encodedSessionId) {
        // 读取Cookie时解码Session ID,与编码逻辑对应
        return new String(Base64Utils.decodeFromString(encodedSessionId));
    }
}

2. 注册自定义解析器为Bean

在配置类中注册上述自定义解析器,替换默认的会话ID解析器:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.server.session.WebSessionIdResolver;

@Configuration
public class WebSessionConfig {

    @Bean
    public WebSessionIdResolver webSessionIdResolver() {
        return new Base64EncodedCookieWebSessionIdResolver();
    }
}

完成配置后,WebSession在向Cookie写入Session ID时会自动执行Base64编码,读取Cookie时则会解码还原,实现和HttpSession中DefaultCookieSerializer.setUseBase64Encoding(true)完全一致的效果。

内容的提问来源于stack exchange,提问作者Sundar M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:19:55