1.ApiSmsController.java发送短信,注释了调用阿里云的接口
2.JwtUtils.java一个生成Jwt的工具类
a.生成key实例
b.创建token
c.判断token是否有效
d.从token中获取用户id
e.从token中获取用户userName
f.从token中解码出claims body体数据
3.LogoVO.java一个登录的数据传输实体类,因为和数据库中的表无法对应字段,固创建此类
4.service-base pom.xml中引入 jjwt
5.RegisterVO.java一个注册的数据传输实体类,因为和数据库中的表无法对应字段,固创建此类
6.UserInfo.java中增加3个常量,标识用户锁定与否,用户头像
7.UserInfoController.java前台用户注册接口、前台用户登录接口
7.1注册接口
a.从用户的提交请求中获取post发送的数据mobile,code,password
b.断言判断3者都不为空,为空返回异常
c.断言判断手机号合法,不合法返回异常
d.从redis中取得短信验证码和上面的code进行相等判断,如果不相等,返回异常
e.调用 UserInfoService.java 的register方法进行数据入库
f.返回注册成功的结果
7.2登录接口
a.从用户的提交请求中获取post发送的数据mobile,password
b.断言判断2者都不为空,为空返回异常
c.从request请求对象中获取客户端ip
d.调用 UserInfoService.java 的login方法查询数据库记录,并记录日志
e.返回查询结果和用户认证token
8.UserInfoService.java 定义抽象方法register、login
9.UserInfoServiceImpl.java 实现接口中的抽象方法
9.1register(RegisterVO registerVo)
a.判断用户是否注册:拿传入的registerVO对象,获取手机号,在userinfo表中查询是否存在记录,记录数为0,返回异常
b.把registerVO对象一一映射到userInfo对象中,然后存入数据库表user_info中
c.把user_info表中存入的ID存入 user_account 表中
9.2login(LoginVO loginVO, String ip)
a.从传入的loginVO对象中获取到 mobile、password、userType
b.从user_info表中查询 mobile、userType 的记录
c.如果记录为空,返回异常
d.从查询的记录中解析出密码,和用户输入的密码进行比对,如果密码也相等进行下一步判断
e.如果用户的状态是1,没有被锁定,进行下一步
f.把传入的用户id 和IP 记录到 user_login_recore 表中
g.用user_info表中的id、name生成一个token
h.把查询到的用户信息和token一起返回给客户端
8.UserInfoVO.java一个用户信息的数据传输实体类,因为和数据库中的表无法对应字段,固创建此类
完整代码地址: