其他分享
首页 > 其他分享> > 三高商城思想

三高商城思想

作者:互联网

 

 

 

 

 

 首先登录需要获取验证码

 

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

 

 我们需要将验证码存入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共享问题

 

标签:三高,需要,登录,思想,redis,验证码,实体类,我们,商城
来源: https://www.cnblogs.com/Lcch/p/16503183.html