登陆这个功能在每个系统中,都已经非常常见。如果有一个投票,系统中哪个功能最先开始做。那么无疑,我相信。票数最高的回事登陆。
最近在整理一个快速开发框架,目前有些设计需要记录;
正式开始
有登陆自然有用户,用户的设计是多样的,可以是简洁的,也可以是错中复杂的。
我的原则是一切从简,所以我觉得理想的设计应该是用户表只有那么几个基础的字段。
属性 | 类型 | 描述信息 |
---|---|---|
id | Long | 自增长序列 |
userName | String | 可作为登陆名或昵称 |
accountId | String | 用户全局ID |
password | String | MD5(用户密码) |
loginLock | Boolean | 用户登录冻结状态 |
用户全局ID选用String类型,是因为雪花ID在js端用number存储会有精度问题
数据库查询根据登录名和密码到数据库查询即可
后续生成token给前端返回
生成TOKEN
可以理解为一个标记。可以不让用户重复登录的一个标记。只要请求带上TOKEN。就代表用户已经登录过
Token如何生成?
UUID? JWT?
没有标准答案。我认为都可以。
UUID如何做?用UUID作为标记。把用户信息存入Redis,或者其他缓存地方,需要使用用户信息时,redis获取即可。
JWT自行研究。后续会单开一篇文章拎出来单讲。
我的快开系统中选择的第三种方式。DIY。
DIY Token
把用户信息用某个特殊字符串隔开后,对称加密或非对称加密即可。
例如: aes(userName-accountId-genTime, privateKey)
如果需要使用用户信息时,只需把Token解密后。split('-')即可可以获取用户信息。