秒杀系统Web实践——02登录模块(MD5加密+JSR303参数校验+全局异常处理+分布式Session)

第二章登录模块

目录

1.数据库设计

2.两次MD5加密

3. JSR303参数检验

4.全局异常处理器

5.分布式Session


1.数据库设计

设计用户表

CREATE TABLE `miaosha_user`(
`id` bigint(20) NOT NULL COMMENT '用户ID,手机号码',
`nickname` varchar(255) NOT NULL,
`password` varchar(32) DEFAULT NULL COMMENT 'MD5 (MDS (pass明文+固定salt) + salt)',
`salt` varchar(10) DEFAULT NULL,
`head` varchar(128) DEFAULT NULL COMMENT '头像,云存储的ID',
`register_date` datetime DEFAULT NULL COMMENT '注册时间',
`last_login_date` datetime DEFAULT NULL COMMENT '上蔟登录时间',
`login_count` int(11) DEFAULT '0' COMMENT '登录次数',
PRIMARY KEY ( `id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

2.两次MD5加密

原理

1.用户端: PASS = MD5 (明文+固定Salt )

2.服务端: PASS = MD5 (用户输入+随机Salt )

操作

1.引入依赖

        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.6</version>
        </dependency>

commons-codec:是Apache开源组织提供的用于摘要运算、编码解码的包。常见的编码解码工具Base64、MD5、Hex、SHA1、DES等。

commons-lang3:我们主要使用字符串操作类StringUtils

2.编写MD5Util类

import org.apache.commons.codec.digest.DigestUtils;

public class MD5Util {
    public static String md5(String src) {
        return DigestUtils.md5Hex(src);
    }

    public static String formPassToDBPass(String formPass, String salt) {
        String str = ""+salt.charAt(0)+salt.charAt(2) + formPass +salt.charAt(5) + salt.charAt(4);
        return md5(str);
    }

}

salt作用:对密码进行拼接增加安全性

前端的MD5加密

 var g_passsword_salt="1a2b3c4d"
 var inputPass = $("#password").val();
 var salt = g_passsword_salt;
 var str = ""+salt.charAt(0)+salt.charAt(2) + inputPass +salt.charAt(5) + salt.charAt(4);
 var password &#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值