zoukankan      html  css  js  c++  java
  • springsession生成sessionid不一致问题解决

    不废话,本人遇到的问题主要是两个不同的springboot版本,需要共享sessionid。

    1.配置application

    #cookie作用域
    server.servlet.session.cookie.path=/
    server.servlet.session.cookie.max-age=-1
    server.servlet.session.cookie.http-only=false
    server.servlet.session.cookie.name=SESSIONIDS


    2.继承springsession默认的DefaultCookieSerializer类,可以设置cookie的基本参数
    public class DynamicCookieMaxAgeCookieSerializer extends DefaultCookieSerializer {
    private static final Logger LOGGER = LoggerFactory.getLogger(DynamicCookieMaxAgeCookieSerializer.class);

    public static final String COOKIE_MAX_AGE = "cookie.max-age";
    @Value("${server.servlet.session.cookie.path}")
    private String cookiePathValue ;
    @Value("${server.servlet.session.cookie.max-age}")
    private Integer cookieMaxAge;

    @Override
    public void writeCookieValue(CookieValue cookieValue) {
    HttpServletRequest request = cookieValue.getRequest();
    // 从request域读取到cookie的maxAge属性
    Object attribute = request.getAttribute(COOKIE_MAX_AGE);
    if (attribute != null) {
    cookieValue.setCookieMaxAge((int) attribute);
    } else {
    // 如果未设置,就使用默认cookie的生命周期
    cookieValue.setCookieMaxAge(this.cookieMaxAge);
    }
    if (LOGGER.isDebugEnabled()) {
    LOGGER.debug("动态设置cooke.max-age={}", cookieValue.getCookieMaxAge());
    }
    super.writeCookieValue(cookieValue);
    }

    @Override
    public void setCookiePath(String cookiePath) {
    super.setCookiePath(cookiePathValue);
    }
    }
    3.IOC
    @Configuration
    //@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)
    public class SpringSessionConfiguration {
    @Value("${server.servlet.session.cookie.name}")
    private String cookieName;

    /* @Value("${server.servlet.session.cookie.secure}")
    private Boolean cookieSecure;*/

    // @Value("${server.servlet.session.cookie.max-age}")
    // private Integer cookieMaxAge;
    //server.servlet.session.cookie.path
    @Value("${server.servlet.session.cookie.path}")
    private String cookiePath;

    @Value("${server.servlet.session.cookie.http-only}")
    private Boolean cookieHttpOnly;

    /* @Value("${server.servlet.session.cookie.same-site}")
    private String cookieSameSite;*/

    @Bean
    public CookieSerializer cookieSerializer() {
    DynamicCookieMaxAgeCookieSerializer serializer = new DynamicCookieMaxAgeCookieSerializer();
    serializer.setCookieName(this.cookieName);
    // serializer.setCookieMaxAge(this.cookieMaxAge);
    //serializer.setSameSite(this.cookieSameSite);
    serializer.setUseHttpOnlyCookie(this.cookieHttpOnly);
    serializer.setCookiePath(cookiePath);
    serializer.setSameSite(null);
    return serializer;
    }
    }
  • 相关阅读:
    ubuntu9.04 解决关机beep声音
    『转』饯行:理想主义终结年代的七种兵器
    尼康数码单反DX Nikkor镜头介绍
    Nikkor镜头介绍
    [转]IDL中全局变量的处理
    APSC画幅
    开心时刻1
    C# 相对路径
    使用C#语言,从Excel2007中读取数据,并显示到Form中的DataGridView。
    C# 讀取Excel、xlsx文件Excel2007
  • 原文地址:https://www.cnblogs.com/liushuaibiao/p/13226464.html
Copyright © 2011-2022 走看看