三高商城思想


三高商城思想

 

 三高商城思想

 

 

 

 首先登录需要获取验证码

三高商城思想

 

 然后我们需要根据第三方服务发送验证码

三高商城思想

 

 我们需要将验证码存入redis中  存储的key为 sms:code:phone  value为 生成的验证码+系统当前时间  在redis中存活时间暂定为1小时

三高商城思想

 

如果用户在一分钟内多次请求发送短信验证码(这里虽然前段会进行设置,但是为了预防有人恶意申请短信 而造成短信资源的浪费 我们后端接口也需要设计1min钟内,用户无法继续申请该接口)

我们就需要在获取验证码之前 先去redis中获取 根据key为sms:code:phone 获取值  若值不为空  那么我们就取出redis中的值 然后截取出时间部分 和现在的时间比较 是否在1min中之内  如果是 则返回自定义error信息 如果超过1min 那么可以继续申请获取验证码

三高商城思想

 —–

当用户提交登录表单 时我们需要对表单进行JSR303验证

三高商城思想

 

 三高商城思想

 

 如果表单中提交的信息不满足实体类中的验证信息  则抛出异常 三高商城思想

 

 由bingdingResult 接受异常  我们再将异常遍历  put到我们创建的hashMap中

三高商城思想

 

然后我们需要将错误添加到model中 再将地址重定向到注册页面

否则 代表登录合法

此时 我们需要获取到用户提交的手机号 拼接上 验证码的前缀 去redis中获取 验证码  并截取出验证码字段  如果从redis中获取的验证码和表单传过来的验证码不一致  那么我们仍需要将页面重定向到注册页面  返回对应的验证码和 错误信息

三高商城思想

 

 如果验证码正确  那么我们需要删除 sms:code:phone 的key

然后去注册  我们需要设置注册用户的默认等级  用户的username  用户的phone  因为这两个字段是在数据库中是唯一的所以我们需要在插入字段前 需检查该字段是否存在

三高商城思想

 

 三高商城思想

 

如果count=0说明之前不存在该账号和手机号  说明当前账号和手机号是可以注册的

接着我们需要设置NickName 为了方便和UserName同名

接着 我们需要将用户注册的密码加密 

 三高商城思想

 

 如果注册成功

那么就将页面跳转到主页  否则注册不成功 就将错误添加到model中返回给注册页面

三高商城思想

 

———–

如果该注册成功用户第二次登录,那么我们需要获取到他的登录信息  账号和密码  同样我们需要进行验证

三高商城思想

 

 如果验证错误 则会抛出异常 由我们的全局异常进行捕获

三高商城思想

 

 将错误信息添加到 redirectAttributes 中 重定向到登录页面

如果验证成功 我们需要调用member服务进行数据库查询(根据账号(或者手机)和密码登录)  如果确实存在 该登录用户  那么我们需要将该用户存在数据库中加密的密码解密 和输入的密码进行比对 如果匹配  则将该对象实体类返回给认证模块

三高商城思想

 

 如果认证模块接受到该实体类 那么就将该实体类存入到session中  userLogin,实体类

然后重定向到首页面  否则就重定向到登录页面

三高商城思想

 

 

当我们将member数据存入session 中  我们跨服务调用 是调用不了的  我们需要配置sessionConfig

三高商城思想

 

 同时  我们要将实体类存入到redis中我们需要将实体类打成二进制 存入redis中  否则会出现无法序列化

三高商城思想

 

我们需要配置一下内容

 三高商城思想

 

 三高商城思想

 

 这样我们就能获取到父域名相同,session共享问题

 

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/275887.html

(0)
上一篇 2022年7月21日
下一篇 2022年7月21日

相关推荐

发表回复

登录后才能评论