会员登陆获取token设计思路1(足够让1万台电脑破解1万年)

分布式服务器设计思路:

redis+mysql+php
设计师:依宸;邮箱:2782268022@qq.com

一、mysql数据库

1、创建用户登陆表【user_login】
id 绑定账号 用户id 账号类型
id account user_id type
1 xiaolele@163.com 100001 email
2 18610006666 100002 mobile
2、创建用户安全表【user_safe】
用户id 登陆密码 支付密码
user_id password paypassword
100001 qwerasdfzxcvqwerasdfzxcvqwerasdf
100002 rewqasdfzxcvqwerasdfzxcvqwerasdf
3、创建用户信息基本表【user】
用户id 昵称 等级
id nickname grade
100001 小乐乐 1
100002 美丽 1

二、redis【1】 鉴权token

用户鉴权前缀 【usertoken】
用户id(key) 刷新密钥(value) 到期时间
userId refreshToken stoptime
usertoken_100001 rewqasdfzxcvqwerasdfzxcvqwerasdf -
用户信息前缀 【userinfo】

内容缓存

用户id(key) 用户信息(value) 到期时间
userId userInfo stoptime
userinfo_100001 {nickname:小乐乐,grade:1,mobile:18610006666} 1591156556

三、php业务逻辑

1、用户注册

1.1、输入用户名:18610006667;密码:12345678;密码加密后提交到服务器注册
1.2、服务器根据用户名查询用户登列表【user_login】;判断该用户名是否已经注册.
1.21、拿到用户登陆账号类型【type】——根据用户名规则检测登陆类型,拿到type=mobile。

1.3、服务器根据自定义规则生成用户唯一id user_id=100003

1.4、写入用户数据表【user】

id nickname grade
100003 未命名 0

1.5、写入登陆数据表【user_login】

id account user_id type
3 18610006667 100003 mobile

1.6、写入用户安全表【user_safe】

user_id password paypassword
100003 qwerasdfzxcvqwerasdfzxcvqwerasdf

2、用户登陆

2.1、输入用户名:18610006667;密码:12345678;提交服务器注册。
2.2、服务器根据用户名查询用户登列表【user_login】;拿到用户id,user_id(100003);
2.3、服务器根据用户id拿到用户密码 password(qwerasdfzxcvqwerasdfzxcvqwerasdf)
2.4、验证用户输入的密码是否与数据库的密码相等;

2.5、根据user_id查询用户基本信息表【user】
拿到数据{user_id:100003,nickname:未命名}

2.6、自定义规则生成用户鉴权【refreshToken】refreshToken(rewqasdfzxcvqwerasdfzxcvqwerasdf)

2.7、存入redis缓存信息
用户鉴权缓存【usertoken】 设置有效期2天

userId refreshToken stoptime
usertoken_100003 rewqasdfzxcvqwerasdfzxcvqwerasdf 1591156556

用户信息缓存【userinfo】

userId userInfo stoptime
userinfo_100003 {nickname:未命名,grade:0,account:18610006667,user_id:100003} 1591156556

2.8、返回给用户的信息
{
userinfo:{user_id:100003,nickname:未命名,grade:0,account:18610006667},
token:{refreshToken:rewqasdfzxcvqwerasdfzxcvqwerasdf,stoptime:1591156556}
}
2.9、保存用户信息至本地缓存库


三、已登陆的用户快速访问服务器

客户端已存在用户数据={
userinfo:{user_id:100003,nickname:未命名,grade:0,account:18610006667},
token:{refreshToken:rewqasdfzxcvqwerasdfzxcvqwerasdf,stoptime:1591156556}
}
3.1、生成accessToken
获取当前时间time,生成规则:accessToken=md5(time+refreshToken);
3.2、组合密钥进行base64加密
进行加密处理(accessToken+当前时间+用户id)
header['sign']=base64_encode(accessToken.time.user_id)
3.3、携带sign向服务器发起请求

四、服务器验证sign

4.1、解密sign
$sign=base64_decode(sign);
$arr=explode(".",$sign);分割数组
拿到
[accessToken,time,user_id]
4.2、判断请求是否过期
time超过系统当前时间60秒(可自定义)即过期。
4.3、根据user_id 取出redis服务器usertoken信息。

4.4、把usertoken.refreshToken根据自定义规则生成accessToken
生成规则:accessToken=md5(time+usertoken.refreshToken);#这个time是前端发过来的time
4.5、判断服务器生成的accessToken是否和客户端发过来的accessToken相同。
4.6、验证通过后进行放行用户访问。

五、用户每次重新启动app刷新refreshToken值

用户每次重新启动app会自动重置refreshToken

六、refreshToken到期前24小时重置refreshToken值。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容