介绍
DefaultCookieSerializer 类是默认的cookie序列化规则类,该类很有用:
- 设置是否使用base64编码。在浏览器看到的
SESSION值与redis数据库看到的值不一致,就是因为spring session2.x默认开启base64编码- spring-session 1.x默认 不使用
- spring-session 2.x默认 使用
- 通过该类可以设置 cookie的seesion key,默认为:
SESSION - 设置cookie的path
springboot配置方式
在配置类中增加下面方法
@Bean
public DefaultCookieSerializer getDefaultCookieSerializer() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
//cookieSerializer.setDomainName("mydomain.com");
cookieSerializer.setDomainNamePattern("^.+?\\.(\\w+\\.[a-z]+)$");
cookieSerializer.setCookieName("SESSION");
cookieSerializer.setCookiePath("/");
cookieSerializer.setUseBase64Encoding(false);
return cookieSerializer;
}
spring mvc配置方式
<bean id="defaultCookieSerializer" class="org.springframework.session.web.http.DefaultCookieSerializer">
<property name="domainName" value="mydomain.com" />
<property name="cookieName" value="SESSION" />
<property name="cookiePath" value="/" />
</bean>
解释
- domainNamePattern : 域名的正则表达式。
^.?\\.(\\w\\.[a-z]+)$是个通用写法。如果正则表达式不匹配,则不会设置任何域。如果正则表达式匹配,则第一个分组将用作域。例如:https://child.mydomain.com的请求会将域设置为mydomain.com。http:// localhost:8080 /或https://192.168.1.100:8080/的请求将不对域名进行处理。因此,在切换域名时,不需要再做任何修改。 - domainName : 域名。设置成你想使用的域名。应设置成项目所在域名的某个父级域名。
- cookieName : session id的cookie名称。
- cookiePath : cookie path。
- useBase64Encoding : 是否使用base64将session id进行编码。
spring-session 1.x默认 不使用
spring-session 2.x默认 使用
让浏览器SESSION值与redis的值一致 — 禁用base64编码
增加配置类
@Configuration
public class Config {
@Bean
public DefaultCookieSerializer getDefaultCookieSerializer() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
// cookieSerializer.setDomainName("mydomain.com");
// cookieSerializer.setDomainNamePattern("^.+?\\.(\\w+\\.[a-z]+)$");
// cookieSerializer.setCookieName("SESSION");
// cookieSerializer.setCookiePath("/"); //设置cookie的path为/,即:根路径
// cookieSerializer.setUseBase64Encoding(false);
cookieSerializer.setUseBase64Encoding(false);
return cookieSerializer;
}
}
浏览器中的cookie,redis数据库中的值 ,是一致的,如下图:
感谢:
https://blog.csdn.net/sayyy/article/details/104199215
