datetime: 2024-02-23 22:57
tags:
- jwt
- token
- php
- js
slug: jwt-user-login-token
summary: 1 前端请求登录接口时后端返回token给前端,前端存储到客户端2
前端每次请求接口时把token放到header中传给后端,后端校验token判断是否登录3
当token即将过期时请求接口(比如还剩10分钟即将过期时),此时后端会检验到token即将过期,会在header中加入token-will-expire=yes键值对
cover_image_url: https://images.unsplash.com/photo-1497864149936-d3163f0c0f4b?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wzNjAwOTd8MHwxfHNlYXJjaHw0fHxsb2dpbnxlbnwwfHx8fDE3MDg3OTQ5NTF8MA&ixlib=rb-4.0.3&q=80&w=1080
link: https://www.notion.so/JWT-0ee05917ffea4eef867ba35bb1fb598b
notionID: 0ee05917-ffea-4eef-867b-a35bb1fb598b
JWT用户登录方案-前后端交互说明
1 前端请求登录接口时后端返回token给前端,前端存储到客户端
2 前端每次请求接口时把token放到header中传给后端,后端校验token判断是否登录
3 当token即将过期时请求接口(比如还剩10分钟即将过期时),此时后端会检验到token即将过期,会在header中加入token-will-expire=yes键值对
4 前端当发现接口返回响应header中有token-will-expire=yes时,调用token刷新的接口获取新的token并替换旧的token到客户端
5 当再次请求接口时将使用新的token放到header中传给后端
6 当前端长时间没有请求接口时,比如已经超过了token的过期时间,下次请求时后端会检验到token已过期,返回用户未登录提示
7当用户退出登录时,前端请求退出接口,后端把该token标记为已失效并缓存到token过期后删除即可,这样当客户端下次使用已退出登录的token时,后端能通过失效标记判断token是否有效
8 前端token的存储有效期须与后端保持一致
说明:
1,2 解决登录问题
3,4 解决续签问题(比如用户一直在操作时,突然token到期问题,且能解决前端判断过期而导致的并发请求失败问题)
7 解决无法废弃问题(比如用户退出问题)(注:7是后端处理,前端可忽略)