|\ \|\ \|\ __ \|\ ____\ |\___ ___\\ \|\___ ___\\ __ \|\ ___ \
\ \ \\\ \ \ \|\ \ \ \___| ___________\|___ \ \_\ \ \|___ \ \_\ \ \|\ \ \ \\ \ \
\ \ \\\ \ \ __ \ \ \ |\____________\ \ \ \ \ \ \ \ \ \ \ \ __ \ \ \\ \ \
\ \ \\\ \ \ \ \ \ \ \___\|____________| \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\ \ \
\ \_______\ \__\ \__\ \_______\ \ \__\ \ \__\ \ \__\ \ \__\ \__\ \__\\ \__\
\|_______|\|__|\|__|\|_______| \|__| \|__| \|__| \|__|\|__|\|__| \|__|
User Account Center. His name is Titan.
Spring Boot + MyBatis + Druid + PageHelper + JWT + Dubbo + Zookpeer
需要自行配置Dubbo + Zookpeer。Dubbo-Admin可在Git上Clone并install。
Dubbo端口:5500;项目端口:5501
register:用户注册
(1)获取secretToken,使用AES加密用户密码
(2)将用户注册信息存入用户信息表
(3)将用户注册信息存入新用户注册表,可作为大数据分析使用
login:用户登录
(1)获取secretToken,使用AES加密用户登录信息
(2)通过加密的用户信息的secretToken进行AES解密
(3)将解密后的数据重新加密MD5进行数据库校验
(4)记录用户登录日志
(5)返回BASE用户信息,以及JWT_TOKEN串
interceptor:拦截器
(1)获取Authorization,获取JWT_TOKEN
(2)通过JWT_TOKEN获取用户BASE信息
(3)判断用户操作是否需要JWT_TOKEN续租
(4)校验是否为常规合法JWT_TOKEN
JWT:头部 + 载荷 + 签名
Header . Payload . Sign
头部(Header):
这里表明是JWT类型,所用的签名算法是HS256算法。
对它也要进行Base64编码,之后的字符串就成了JWT的头。
载荷(Payload):
将上面的JSON对象进行[base64编码]可以得到下面的字符串。
这个字符串我们将它称作JWT的载荷。
签名(Sign):
签名的过程,实际上是对头部以及载荷内容进行签名。
将Header . Payload通过加密后得到的这个编码就是签名。
如果Header和Payload被修改后,但签名不同,服务端会拒绝JWT_TOKEN。