实现登录功能
1、数据库设计
2、明文密码两次MD5处理
3、JSR303参数检验+全局异常处理器
4、分布式Session
【数据库设计】
【两次MD5】
第一次是把用户传入的密码进行加密,http协议在网络中传输的是明文,为了防止密码别截取,进行加密处理,再把处理过后的密码传给服务端。
第二次是服务端接受到的密码和生成的随机salt结合,进行一次MD5处理,再写入数据库。如果数据库泄露,那么可以根据MDS值反推出用户的密码,所以双重加密确保安全。(1)添加依赖:
(2)第一次加密:
这样的加密方式并不是绝对的安全,因为salt值页面写的,如果被获取页面代码,也会存在泄漏密码的风险。
所以接下来第二次加密,随机生成的salt值,把密码和salt值都存入数据库。
(3)第二次加密:
来看一下两次加密运行结果:
可以看到第一次的运行结果可以根据固定的salt值推出明文密码,二次加密后就算数据库泄露,也只能获得第一次加密后的密码。
结合一下两次加密:
【实现登录功能】
/to_login跳转到登录页面,https://github.com/yqq98/seckill/blob/develop/src/main/resources/templates/login.html,页面实现代码。
登录之后出现错误
是json页面没有响应,漏了个@ResponseBody,添加进去运行结果:
就说明我们登录成功了 。那么只是简单的登录,还没有校验,接下来就是对账号和密码的校验。
其中ValidatorUtil类是号码格式类,判断手机号码是否是十一位数
要实现登录,那我们就要创建用户对象,创建MiaoshaUser.java获取参数;接口MiaoshaUserDao具体的ql语句;MiaoshaUserService.java注入do层