记录一下困扰一周的问题,Spring-Session中session丢失的问题。
Spring-Session2中,通过web.xml配置了DelegatingFilterProxy后,默认的session策略是CookieHttpSessionIdResolver,通过cookie保存sessionid。CookieHttpSessionIdResolver使用的DefaultCookieSerializer处理cookie的值。DefaultCookieSerializer通过获得servlet容器是否为servlet3来设定cookie的httpOnly属性,httpOnly为true时,前台的js代码无法通过document.cookie来获取cookie中的内容。通过useSecureCookie属性来设置cookie的secure属性,secure为true时必须通过https请求才能携带cookie中的信息。默认的useSecureCookie为false。
采用前后台分离方式开发的场合,还需要注意nginx转发时是否携带了cookie中的信息。如果代理路径和后台项目路径不一致的时候,需要修改nginx.conf添加cookie代理配置
location /proxy_path {
proxy_pass http://127.0.0.1:8080/project;
proxy_cookie_path /project /proxy_path;
}
以上内容不正确的地方,欢迎留言。