当前位置:首页 > VUE

vue 实现token 登录

2026-01-08 06:44:13VUE

安装依赖

确保项目中已安装 axiosvue-router。若未安装,可通过以下命令安装:

npm install axios vue-router

配置axios拦截器

src 目录下创建 utils/http.js 文件,配置请求和响应拦截器,自动携带 token 并处理 token 过期:

import axios from 'axios';

const http = axios.create({
  baseURL: 'https://your-api-domain.com/api',
});

// 请求拦截器:添加token
http.interceptors.request.use(config => {
  const token = localStorage.getItem('token');
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }
  return config;
});

// 响应拦截器:处理token过期
http.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      localStorage.removeItem('token');
      window.location.href = '/login';
    }
    return Promise.reject(error);
  }
);

export default http;

登录逻辑实现

在登录组件中调用接口获取 token 并存储:

import http from '@/utils/http';

export default {
  data() {
    return {
      form: {
        username: '',
        password: '',
      },
    };
  },
  methods: {
    async handleLogin() {
      try {
        const res = await http.post('/login', this.form);
        localStorage.setItem('token', res.data.token);
        this.$router.push('/dashboard');
      } catch (error) {
        alert('登录失败');
      }
    },
  },
};

路由守卫配置

src/router/index.js 中配置全局前置守卫,保护需要认证的路由:

import Vue from 'vue';
import Router from 'vue-router';
import Login from '@/views/Login.vue';
import Dashboard from '@/views/Dashboard.vue';

Vue.use(Router);

const router = new Router({
  routes: [
    { path: '/login', component: Login },
    { path: '/dashboard', component: Dashboard, meta: { requiresAuth: true } },
  ],
});

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token');
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login');
  } else {
    next();
  }
});

export default router;

登出功能实现

在需要登出的地方清除 token 并跳转至登录页:

methods: {
  handleLogout() {
    localStorage.removeItem('token');
    this.$router.push('/login');
  },
}

注意事项

  • Token 存储:使用 localStorage 存储 token 需注意 XSS 风险,敏感项目可改用 httpOnly cookies。
  • HTTPS:确保生产环境使用 HTTPS 传输 token。
  • 刷新 Token:若后端支持 token 刷新,可在拦截器中实现自动刷新逻辑。

vue 实现token 登录

标签: vuetoken
分享给朋友:

相关文章

vue实现条件判断

vue实现条件判断

Vue 条件判断实现方法 Vue 提供了多种方式实现条件判断,可以根据不同场景选择合适的方式。 v-if / v-else-if / v-else 这是 Vue 中最常用的条件渲染指令,根据表达式…

vue前端实现搜索

vue前端实现搜索

实现搜索功能的基本方法 在Vue中实现搜索功能通常涉及以下几个关键步骤,结合数据绑定、计算属性和方法调用来动态过滤和显示结果。 数据绑定与输入处理 使用v-model双向绑定搜索输入框的值,监听用户…

前端vue登录功能实现

前端vue登录功能实现

Vue 登录功能实现步骤 创建登录表单组件 在 Vue 项目中创建一个登录组件,通常命名为 Login.vue。该组件包含用户名和密码输入框以及提交按钮。 <template> &l…

vue实现横向导航

vue实现横向导航

vue实现横向导航的方法 使用Flex布局实现横向导航 在Vue中可以通过Flex布局快速实现横向导航。创建一个组件,使用display: flex和flex-direction: row属性使导航项…

vue怎么实现文件树

vue怎么实现文件树

Vue 实现文件树的方法 使用递归组件 递归组件是处理嵌套数据结构的理想方式。文件树通常包含文件夹和文件的嵌套结构,适合用递归组件实现。 <template> <ul>…

vue前端实现打印功能

vue前端实现打印功能

使用Vue实现前端打印功能 在Vue项目中实现打印功能可以通过多种方式完成,以下是几种常见的方法: 使用window.print()方法 这是最简单的打印方式,直接调用浏览器的打印功能。 meth…