当前位置:首页 > VUE

vue实现登录保存token

2026-01-20 00:56:23VUE

Vue 中实现登录保存 Token

使用 localStorage 保存 Token

登录成功后,将 Token 存储在 localStorage 中,便于页面刷新后仍能保持登录状态。

// 登录成功后保存 Token
localStorage.setItem('token', response.data.token);

localStorage 中获取 Token 并验证用户是否登录。

// 获取 Token
const token = localStorage.getItem('token');
if (!token) {
  // 未登录,跳转到登录页
  router.push('/login');
}

使用 Vuex 管理 Token

在 Vuex 中定义状态管理 Token,结合 localStorage 实现持久化存储。

// store.js
import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    token: localStorage.getItem('token') || ''
  },
  mutations: {
    setToken(state, token) {
      state.token = token;
      localStorage.setItem('token', token);
    },
    clearToken(state) {
      state.token = '';
      localStorage.removeItem('token');
    }
  },
  actions: {
    login({ commit }, token) {
      commit('setToken', token);
    },
    logout({ commit }) {
      commit('clearToken');
    }
  }
});

在组件中调用 Vuex 的 actions 进行登录和登出操作。

// 登录
this.$store.dispatch('login', response.data.token);

// 登出
this.$store.dispatch('logout');

使用 Axios 拦截器自动携带 Token

通过 Axios 拦截器,在每次请求时自动将 Token 添加到请求头中。

// axios 配置
import axios from 'axios';

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

路由守卫验证登录状态

使用 Vue Router 的全局前置守卫,验证用户是否已登录,未登录则跳转到登录页。

// router.js
import Vue from 'vue';
import Router from 'vue-router';

Vue.use(Router);

const router = new Router({
  routes: [
    // 路由配置
  ]
});

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

export default router;

处理 Token 过期

在 Axios 响应拦截器中检查 Token 是否过期,过期则跳转到登录页。

axios.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    if (error.response.status === 401) {
      // Token 过期或无效,跳转到登录页
      router.push('/login');
    }
    return Promise.reject(error);
  }
);

使用 Cookie 保存 Token(可选)

如果需要更安全的存储方式,可以使用 js-cookie 库将 Token 存入 Cookie。

import Cookies from 'js-cookie';

// 保存 Token
Cookies.set('token', response.data.token, { expires: 7 }); // 7天后过期

// 获取 Token
const token = Cookies.get('token');

// 删除 Token
Cookies.remove('token');

vue实现登录保存token

标签: vuetoken
分享给朋友:

相关文章

vue请求实现进度条

vue请求实现进度条

实现请求进度条的方法 在Vue中实现请求进度条可以通过多种方式完成,常见的有使用第三方库如axios结合nprogress或自定义进度条组件。以下是几种实现方法: 使用axios和nprogres…

vue 实现脚本

vue 实现脚本

Vue 实现脚本的方法 Vue.js 提供了多种方式来实现脚本功能,包括组件内脚本、混入(Mixins)、插件(Plugins)以及自定义指令等。以下是常见的实现方式: 组件内脚本 在 Vue 单…

vue实现Siri

vue实现Siri

Vue 实现 Siri 风格语音交互 实现类似 Siri 的语音交互功能需要结合语音识别、语音合成和前端交互逻辑。Vue 作为前端框架,可以很好地管理这些功能的交互状态。 语音识别集成 使用 Web…

vue mvvm 实现

vue mvvm 实现

Vue MVVM 实现原理 Vue.js 的 MVVM(Model-View-ViewModel)架构通过数据绑定和响应式系统实现视图与数据的自动同步。以下是其核心实现机制: 数据劫持与响应式系统…

vue实现链接

vue实现链接

Vue 实现链接的方法 在 Vue 中实现链接可以通过多种方式,包括使用 <router-link>、<a> 标签或编程式导航。以下是几种常见的方法: 使用 <rou…

vue实现CRUD

vue实现CRUD

Vue 实现 CRUD 操作 Vue 提供了响应式数据绑定和组件化开发能力,结合后端 API 可以轻松实现 CRUD(增删改查)功能。以下是基于 Vue 3 和 Axios 的完整实现方案。 安装依…