需求
今天先写一下如何实现,之后再更新一篇如何发现这个问题的。
我们的项目使用了spring-session-core来存储共享session,存在redis中,然后在cookie中是设置了key为SESSION的session。但是我们有一些开放接口不需要经过这一套来鉴权,所以需要排除这些接口,不设置session。
实现
实现主要分两步,第一步继承CookieHttpSessionIdResolver ,然后把排除条件加进去
public class CustomCookieSerializer extends CookieHttpSessionIdResolver { @Override public void writeCookieValue(..) { if (needWriteCookie) { //判断条件根据自己的需求写 super.writeCookieValue(..); } } }
第二步提供一个cookieSerializer来替代默认的
@Bean public CookieSerializer cookieSerializer() { CustomCookieSerializer serializer = new CustomCookieSerializer (); serializer.setCookieName("GULISESSION"); serializer.setCookiePath("/"); // 设置cookie的作用域为父域名 return serializer; }
这样就可以了。