请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

单点登录,我理解的逻辑是这样的,首先新建一个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

正在回答 回答被采纳积分+3

1回答

geelylucky 2019-01-25 17:12:25

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

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

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

0 回复 有任何疑惑可以回复我~
  • 提问者 慕神8359304 #1
    我试了一下,如果使用cookie实现的单点登录,每次刷新都会在redis中存储一个sessionid,用了springsession实现单点登录,就不会存了,为啥
    回复 有任何疑惑可以回复我~ 2019-01-25 18:11:32
  • geelylucky 回复 提问者 慕神8359304 #2
    我猜测要么是前端没有携带sessionId进服务器,要么是服务器没有拿到sessionId,这样就导致服务器每次都需要生成一个新的sessionId。
    回复 有任何疑惑可以回复我~ 2019-01-26 17:06:46
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信