request.getSession()保存值成功,但是获取值是获取的上一次的值
springboot2+redis+shrio项目,本地启动项目,在登陆的时候第一次验证码始终会失败,我打印输出语句之后发现一个问题,
我在生成验证码之后,就保存进request.getSession()中,然后再取出打印,这里是正确的;
但是我在登陆验证方法中校验这个验证码的时候 从request.getSession()中取出的又是上一次保存的验证码。
并且,我重新点击获取验证码之后重新登录又可以了
结题了,这个问题还是没有找到方法解决,我只有在登陆界面加载完成之后再刷新一次验证码。
“Devil组”引证GPT后的撰写:
这个问题可能是由于在获取验证码时,验证码保存在了浏览器的缓存中,而不是保存在后端的 session 中,导致第一次验证码验证失败。之后,当您再次获取验证码并保存到 session 中时,由于浏览器缓存中的验证码仍然存在,所以在您进行下一次验证码验证时,会从浏览器缓存中获取上一次的验证码,而不是从 session 中获取最新的验证码,因此导致验证失败。
解决这个问题可以尝试以下几个方案:
小魔女参考了bing和GPT部分内容调写:
这个问题可能是由于session的超时时间导致的,当session超时时,之前保存的值就会失效,而登录验证方法中取出的就是上一次保存的值,所以会出现这样的情况。
解决方法就是设置session的超时时间,可以在application.properties中设置:
server.servlet.session.timeout=1800
设置session的超时时间为1800秒,这样就可以解决这个问题。
回答不易,记得采纳呀。