登陆实现原理

一 传统登陆 session/cookie

出现的问题-->客户端不仅仅是浏览器,有可能是其他客户端,比如app,小程序.....而这些客户端有可能不支持session/cookie

传统登陆流程图例

&&那么如何解决以上问题?

利用令牌(token)登陆

&&数据库的选择

1>mysql 能存 但时效不满足

2>redis 能存且有时效

选redis来存token

二 Token登陆

将原来的sessionId修改成手动增加的tokenId

令牌登陆的流程

1>客户端发起登陆请求,带上账号/密码到后端接口

2>后端接收请求,获取账号与密码,以它们作为条件查询数据库得到user对象

3>判断user对象是否为null,如果为null,提示登陆失败

4>如果user对象不为null,创建token

     String token = UUID.........保证唯一

5>以token为key,user对象为value 缓存到redis中,有效时间30分钟

6>将token跟user对象封装到JsonResult中返回到客户端

7>客户端接收到响应值,并解析得到token跟user对象,然后缓存这些数据

注意-->设置有效时间30分钟(和前面保持一致)

-----------------------------------------------------------------------------------

8>下一次请求,客户端在发起请求之前,手动将token设置到请求头中,跟请求参数一起发送到服务端

9>后端服务器一接收请求,通过Request对象获取到token请求头

String token = request.getHeader("token");

10>以token作为key,查询redis数据库,得到user对象

11>判断user对象是否为null

为null,表示没有登陆/登陆时效超时 提示

不为null

  • 重置token时效时间为30分钟
  • 执行后续逻辑

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值