当前位置:首页 > VUE

vue 实现基于 token

2026-03-28 09:36:15VUE

基于 Token 的认证实现(Vue)

在 Vue 中实现基于 Token 的认证通常涉及前端与后端的协作,以下是关键步骤和代码示例:

登录获取 Token

通过 API 发送用户凭证(如用户名/密码)到后端,接收并存储返回的 Token:

// 在登录方法中
axios.post('/api/login', {
  username: 'user',
  password: 'pass'
})
.then(response => {
  const token = response.data.token;
  localStorage.setItem('authToken', token); // 存储到本地
  axios.defaults.headers.common['Authorization'] = `Bearer ${token}`; // 设置请求头
})
.catch(error => console.error('登录失败', error));

请求拦截器

通过 axios 拦截器自动为每个请求添加 Token:

axios.interceptors.request.use(config => {
  const token = localStorage.getItem('authToken');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
}, error => Promise.reject(error));

路由守卫

使用 Vue Router 的导航守卫保护需要认证的路由:

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('authToken');
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login'); // 跳转到登录页
  } else {
    next();
  }
});

在路由配置中标记需要认证的路由:

{
  path: '/dashboard',
  meta: { requiresAuth: true }
}

Token 过期处理

拦截响应,处理 Token 过期情况:

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      localStorage.removeItem('authToken'); // 清除无效 Token
      router.push('/login'); // 重定向到登录
    }
    return Promise.reject(error);
  }
);

刷新 Token(可选)

若后端支持 Token 刷新,可在过期时自动获取新 Token:

if (error.response.status === 401 && !originalRequest._retry) {
  originalRequest._retry = true;
  return axios.post('/api/refresh-token', { refreshToken })
    .then(({ data }) => {
      localStorage.setItem('authToken', data.token);
      originalRequest.headers.Authorization = `Bearer ${data.token}`;
      return axios(originalRequest);
    });
}

关键注意事项

  • 安全存储:避免使用 localStorage 存储敏感信息,生产环境建议结合 HttpOnly Cookie。

  • HTTPS:确保所有通信通过 HTTPS 加密。

  • 注销处理:清除本地 Token 并重置请求头:

    vue 实现基于 token

    function logout() {
      localStorage.removeItem('authToken');
      delete axios.defaults.headers.common['Authorization'];
    }

通过以上步骤,可在 Vue 应用中实现完整的基于 Token 的认证流程。实际开发时需根据后端 API 规范调整字段名称和逻辑。

标签: vuetoken
分享给朋友:

相关文章

vue前端实现注册

vue前端实现注册

使用 Vue 实现用户注册功能 环境准备 确保已安装 Vue CLI 或通过 CDN 引入 Vue。若使用 Vue CLI,需安装 axios 或其他 HTTP 库用于后端通信。 注册表单组件 创建…

vue实现cs

vue实现cs

Vue 实现 CS(Client-Side)渲染的常见方法 Vue.js 是一个用于构建用户界面的渐进式框架,默认采用客户端渲染(CSR)。以下是几种常见的实现方式: 使用 Vue CLI 创建项目…

vue实现全屏

vue实现全屏

Vue 实现全屏功能的方法 在 Vue 中实现全屏功能可以通过浏览器提供的 Fullscreen API 来实现。以下是几种常见的实现方式: 使用原生 Fullscreen API 通过调用 doc…

vue 实现分屏

vue 实现分屏

Vue 实现分屏的方法 使用 CSS Flexbox 或 Grid 布局 通过 CSS Flexbox 或 Grid 布局可以轻松实现分屏效果。在 Vue 组件中定义两个或多个区域,并使用 CSS 控…

vue实现筛选

vue实现筛选

实现筛选功能的基本思路 在Vue中实现筛选功能通常需要结合数据绑定、计算属性和方法。筛选的核心逻辑是根据用户输入的条件过滤原始数据列表,并动态更新显示结果。 数据准备 定义一个数组存储原始数据,另一…

vue实现评分

vue实现评分

Vue 实现评分功能 使用组件库实现 安装 element-ui 或 ant-design-vue 这类 UI 库,它们已经内置了评分组件。 以 element-ui 为例: <te…