前后端分离时,每次请求的 SessionId 不一致,导致认证失败
来源:5-8 实现基于session的SSO(认证服务器的session有效期)
岁月丶如歌
2019-12-10
- 第一次认证成功后,访问 /me 时 JSESSIONID=BA7C73188883BB6193F76BC8FB602446
- 然后第一次访问订单请求 /api/order/orders/1 RequestHeaders 里 Cookie JSESSIONID=BA7C73188883BB6193F76BC8FB602446,请求成功;ResponseHeaders会重新set-cookie: JSESSIONID=7A73016784EF761FA23BABDB32C7770B; Path=/; HttpOnly
- 第二次访问订单请求 /api/order/orders/1 RequestHeaders 里 Cookie JSESSIONID=7A73016784EF761FA23BABDB32C7770B,请求失败;ResponseHeaders会重新set-cookie: JSESSIONID=5A52D9A2E379568809DE8C2A3B2C6626; Path=/; HttpOnly
我前端用vue实现的,认证成功后,第一次请求订单服务携带的JSESSIONID是能在后端中找到对应session的,可以请求成功,但是请求成功后response会重新setCookie,JSESSIONID是一个新的值,导致第二次请求订单服务的时候携带的JSESSIONID在后端找不到对应的session,就没有session里面的token,网关token校验的时候就失败了。
我在admin后端,加了一个CorsFilter 处理跨域的请求。但是还是一个,每次请求都会生成一个新的SessionID,Vue前端 axios.defaults.withCredentials = true也设置了跨域的。
请老师帮忙看看怎么回事?
写回答
1回答
-
JoJo
2019-12-11
spring security有个默认的防止session固定攻击的设置,在配置里关掉试一下,见下图
022019-12-12
相似问题