用户登录的详细流程(一)

**

用户登录的详细流程

**
**

1.流程概述

**
(1)首先在进行用户登录的时候,要进行一些必要的准备工作。
比如说要对用户登录表进行设计。
一般是userId,userName,phone,password,salt,remark等等。
通常数据库存储的密码是md5进行加密的密文,但也不能直接对登录密码进行md5加密,然后存在数据库中。这样的密文用浏览器上的解密工具很容易就被破解了。一般是用加密盐salt和用户的密码一起加密,而这个salt本质上是随机数。
同样也需要设置加密规则,是怎么加密,是密码+salt一起加密,还是其他的加密方法。

加密方法1(hutool工具包里面的util中secureUtil类中方法)

String md5Password = SecureUtil.md5(data);//data就是进行加密的数据

加密方法2(使用Spingframework自带的DigestUtils)

String pwd= DigestUtils.md5DigestAsHex(user.password.getBytes())//user.password 就是对应的需要加密的密码

加密方法3(使用commons-code中digest包中的DigestUtils类的方法)

String pwd= DigestUtils.md5Hex(data)//data是需要加密的密码

可以选择以上三个代码结合加密规则进行密码的md5加密。
然后把已经多次加密的密码存入数据库中。
(2)用户输入密码登录
可以直接把密码明文传入后台,然后按照加密的规则进行加密,然后和数据库的密码进行比较。
也可以让前端按照加密规则对明文直接加密好,后台直接把接收的数据和数据库进行对比。
(3)通过token令牌进行验证
如果对比密码是正确的,后台返回token(使用jwtUtil进行设置,token里面包含用户主键比如userid或者其他的)
然后前端把token存储起来,每次向前端请求数据必须带着token,然后后端根据带来的token进行对比和时效校验,如果正确在把数据返回。
**

2.总结

**
token的设置各种各样,而且后端的token校验也比较复杂,同时因为登录的用户权限不一致,还需要使用拦截器对请求进行拦截,进一步保证数据安全。关于这三块,等我具体了解清楚在进行记录。

你可能感兴趣的:(数据库,java,spring)