access_token 和 refresh_token 的使用
在 Web 开发中,使用 access_token 和 refresh_token 的双 token 机制是为了在安全性与用户体验之间取得平衡。以下是它们各自的作用以及为什么需要使用双 token: access_token 的作用 访问受保护资源:access_token 是用于直接访问受保护资源的令牌。它通常包含用户的身份信息和权限范围。 短生命周期:access_token 的有效期较短,通常为几分钟到几小时。这样做的目的是减少令牌被泄露后可能造成的损害,因为攻击者只有很短的时间窗口可以利用这个令牌。 refresh_token 的作用 刷新 access_token:当 access_token 过期时,refresh_token 用于获取新的 access_token。它不需要用户重新登录,从而提高了用户体验。 长生命周期:refresh_token 的有效期较长,通常为几天到几周。它通常存储在客户端的安全存储中,如加密的本地存储。 安全存储:由于 refresh_token 的有效期较长,它通常不会频繁地在网络中传输,从而降低了被盗的风险。 为什么要使用双 token 提高安全性:通过将 access_token 和 refresh_token 分开使用,即使 access_token 被泄露,攻击者也无法长时间利用它。而 refresh_token 由于其长生命周期和安全存储,即使被盗,服务器也可以随时将其标记为无效。 优化用户体验:用户不需要频繁重新登录。当 access_token 过期时,系统可以自动使用 refresh_token 获取新的 access_token,用户几乎感觉不到任何中断。 简化 Token 管理:双 token 机制使得 Token 的管理更加灵活,可以根据不同的安全需求设置不同的有效期。 实际 axios 使用时, 使用 axios 的 interceptor 拦截 access_token 失效的请求, 通过 refresh_token 无感刷新 access_token 后, 再重放 之前失败的请求 import axios from 'axios' const instance = axios.
Recent Posts
Tags
- apache 4
- axios 1
- benchmark 1
- c 1
- canvas 1
- centos 3
- channel 1
- crontab 1
- css 2
- docker 4
- fail2ban 1
- frp 1
- gin 1
- github 1
- go 26
- goaccess 1
- goroutine 1
- http 1
- https 1
- jetbrains 1
- jquery 1
- js 2
- linux 20
- mermaid 1
- mysql 10
- nginx 3
- node 1
- php 43
- prisma 1
- react 8
- server 1
- ssh 2
- tarojs 1
- tcp/ip 1
- token 1
- ubuntu 1
- ufw 1
- unit-test 1
- vmware 1
- vscode 1
- vue 12
- yum 1
- 域名 3
- 安全 2
- 微信 3
- 算法 3