老师,您好,请教一个问题

来源:5-8 Redis数据结构:String字符串

慕神8359304

2019-01-25

单点登录,我理解的逻辑是这样的,首先新建一个cookie名字是mmall_login_token,该cookie的value是seeionId,然后在redis中set(sessionId,相关信息);用户发送一个请求过来,通过mmall_login_token读取相关sessionId,进而找到相关session,有两个问题:第一,浏览器中显示两个cookie,一个是jsessionId,一个是mmall_login_token,按上述逻辑,我是觉得这两个cookie的value值应该相同,为什么视频里的不一样啊?
第二,我第一次请求了login.do,然后不断刷新,不断刷新,意味着login.do的代码需要重新运行,我可不可以这样理解,不断刷新,每次的sessionid都不相同,那么名为mmall_login_token的value值不就每次都不一样吗,为什么redis只存了一个sessionid

写回答

1回答

geelylucky

2019-01-25

亲爱的同学,你好,我是geely老师的助教。

1.jsessionId是servlet生成的,自定义的mmall_login_token生成逻辑不是servlet生成的,它们并不需要一致。

2.客户端请求服务器,如果客户端没有携带sessionId,那么服务器就生成一个sessionId给客户端,如果客户端请求的时候携带了sessionId,那么服务器就不会生成sessionId。所以不管你刷新多少次,只有第一次请求的时候会生成一个sessionId,此后就一直是这个sessionId。

0
2
geelylucky
回复
慕神8359304
我猜测要么是前端没有携带sessionId进服务器,要么是服务器没有拿到sessionId,这样就导致服务器每次都需要生成一个新的sessionId。
2019-01-26
共2条回复

Java企业级电商项目架构 Tomcat集群与Redis分布式

Tomcat集群+Redis分布式+代码重构+源码原理解析

2685 学习 · 947 问题

查看课程