当前位置: 首页> 娱乐> 明星 > 环球网广东疫情最新消息_传奇网页游戏下载_seo搜索是什么意思_济南网站推广公司

环球网广东疫情最新消息_传奇网页游戏下载_seo搜索是什么意思_济南网站推广公司

时间:2025/8/23 9:26:40来源:https://blog.csdn.net/qq_40397392/article/details/145749492 浏览次数:0次
环球网广东疫情最新消息_传奇网页游戏下载_seo搜索是什么意思_济南网站推广公司

 结论:HttpSession类的对象session更像是独属于某一个用户的小型数据库,数据库的密码就是前端传回来的JSESSIONID的值

    public Result sendCode(String phone, HttpSession session) {//1.校验手机号if(RegexUtils.isPhoneInvalid(phone)){//2.如果不符合,返回错误信息return Result.fail("手机号格式错误!");}//3.生成验证码String code = RandomUtil.randomNumbers(6);//337718//4.保存验证码到sessionsession.setAttribute("code",code);//337718//5.发送验证码log.debug("发送短信验证码成功,验证码:{}",code);//6.返回okreturn Result.ok();}
public Result login(@RequestBody LoginFormDTO loginForm, HttpSession session) {//1.校验手机号String phone = loginForm.getPhone();if(RegexUtils.isPhoneInvalid(phone)){//2.如果不符合,返回错误信息return Result.fail("手机号格式错误!");}//2.校验验证码Object cacheCode = session.getAttribute("code");//保存的337718String code = loginForm.getCode();//用户刚刚在http请求里体里上传的验证码//3.验证码不一致,报错//4.一致根据手机号查询用户//5.判断用户是否存在//6.不存在,创建新用户并保存//7.保存用户到session并返回结果return null;}

在sendCode()方法中保存验证码到session,我没看到session没有传递给login()方法,所以login()方法里的session.getAttribute("code")是怎么拿到保存的验证码的呢?

答:

由于 HttpSession 是基于会话的,同一个用户的多次请求会共享同一个 HttpSession 对象,因此 login()方法可以通过 session.getAttribute("code") 获取到之前保存的验证码。

具体来说,sendCode 和 login 方法都接收 HttpSession 作为参数,Spring 框架会自动将同一个用户的 HttpSession 对象传递给这两个方法。因此,login 方法可以通过 session.getAttribute("code") 获取到 sendCode 方法中保存的验证码。

Spring 框架是怎么识别各个请求是否为同一个用户?

用户在点击发送验证码按键的时候,前端会在请求头里请求服务器设置JSESSIONID

服务器的response Headers里就会返回set-cookie,前端自动保存这个JSESSIONID,之后每次请求都会在请求头里带上这个JSESSIONID,Spring 框架会自动将同一个JSESSIONID的请求视为同一个用户。

set-cookie:JSESSIONID=F3EAFF14FBC9A909286D915BD961630E; Path=/; HttpOnly

关键字:环球网广东疫情最新消息_传奇网页游戏下载_seo搜索是什么意思_济南网站推广公司

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: