身份令牌(Token)
一句话:用户登录成功后,服务器发给客户端的一串凭证,之后每次请求带上这个凭证证明"我是已登录用户",不用每次都重新输入密码。
它是什么
由于HTTP请求默认是无状态的(服务器不会自动记住你上一次是谁),Token机制的作用是:登录成功后服务器生成一个Token给你,之后的每个请求你都带着这个Token,服务器验证Token有效就知道你是谁、有什么权限,不用每次都重新验证账号密码。
适合干什么
- 需要维持用户登录状态的应用
- 前后端分离架构下的身份验证
- 移动端/API调用的身份验证
不适合干什么
- 完全不需要用户登录概念的公开只读页面
普通人怎么用
登录成功后把服务器返回的Token存起来(比如浏览器的localStorage),之后每次请求在请求头里带上这个Token,服务器就知道是谁在请求。
进阶用户怎么用
Token要设置合理的过期时间,过期后需要重新登录或用刷新令牌(refresh token)机制换取新Token;敏感操作即使Token有效也建议二次验证,不要完全依赖长期有效的Token。
常见误区
- 把Token存在容易被窃取的地方(比如没有防护的Cookie或者暴露在URL里),存在被盗用的风险
- Token设置永不过期,一旦泄露风险持续存在,应该设置合理的过期时间并支持主动失效机制
和相似工具的区别
- 和JWT的区别:JWT是Token的一种具体实现格式(自包含用户信息,服务器不用查数据库就能验证),普通Token可能只是一个随机字符串,需要查数据库/缓存验证有效性
入门步骤
- 用户登录成功后生成并返回Token
- 客户端存储Token,之后请求带上
- 服务器验证Token有效性并识别用户身份