前端 Token 管理与最佳实践

从存储到安全
1. 引言

Token 的作用:身份验证、权限控制、会话管理。

常见场景:登录、角色切换、Token 续签、过期处理。

问题背景:从实际代码中发现的 setToken 冗余问题引出主题。
2. Token 的生命周期

(1) 生成与存储

后端生成:登录接口返回 Token(如 JWT)。

前端存储:

localStorage / sessionStorage :简单但易受 XSS 攻击。
Cookie (HttpOnly + Secure):更安全,但需注意跨域。

代码示例:

Javascript

// 存储 Token(基于 Cookie)

复制代码
 export function setToken(token) {
   Cookies.set('token', token, { expires: 1 }); // 1 小时过期
 }

(2) 携带与验证

请求拦截器:自动附加 Token 到请求头。

Javascript

复制代码
axios.interceptors.request.use(config => {
    config.headers.Authorization = getToken();
    return config;
});

后端校验:验证 Token 合法性及过期时间。

(3) 续签与过期
续签机制:

后端设置token过期时间一小时,如果一小时之后用户还有操作,后端通过接口的响应头返回新 Token( set-authorization )。前端续签部分代码展示:

复制代码
service.interceptors.response.use(
  async res => {

    let setAuthorization = res.headers['set-authorization']
    if(setAuthorization){
      setToken(setAuthorization)
    }
}}

过期处理:

①移除token;

②重置路由(初始化路由,避免登录后出现路由重复的警告);

③跳转登录页(有可能在这一步之前需要获取重定向路径,登录直接跳转重定向的路径);

④移除动态路由(清除动态添加的路由,避免切换账号时路由权限错误);

相关推荐
ZC跨境爬虫8 分钟前
跟着 MDN 学CSS day_47:(移动优先实战——从手机到宽屏的响应式进化)
前端·css·html·tensorflow·媒体
小新1109 分钟前
vue实战项目 计算器
前端·javascript·vue.js
秋田君11 分钟前
2026 前端新出路:掌握 C++ 核心语法,无缝衔接 QT 桌面开发
前端·c++·qt
老毛肚21 分钟前
jeecgboot vue 路由 拆分01
前端·javascript·typescript
ZC跨境爬虫22 分钟前
跟着 MDN 学CSS day_46:(响应式实战——用媒体查询打造双列布局)
前端·css·ui·html·tensorflow·媒体
狗凯之家源码网24 分钟前
多语言企鹅养殖投资返利系统 自定义产品配置 一键部署源码
前端·架构·php
每天吃饭的羊28 分钟前
LeetCode 链表
前端
神仙别闹29 分钟前
VUE框架 + Element UI + Node 模拟打印机的 Web 即时打印
前端·vue.js·ui
vivo互联网技术31 分钟前
把输入框变成 AI 的“超级入口”(ProseMirror 全流程实战)
前端·agent
lunzi_082631 分钟前
《图解HTTP》--第5章-与HTTP协作的Web服务器
服务器·前端·http