三高商城思想
作者:互联网
首先登录需要获取验证码
然后我们需要根据第三方服务发送验证码
我们需要将验证码存入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