当前位置:首页 > VUE

vue实现登录加token

2026-01-21 09:51:51VUE

Vue 实现登录加 Token

在 Vue 中实现登录功能并管理 Token,通常需要结合后端 API 和前端存储机制。以下是实现步骤:

安装 axios

使用 axios 发送 HTTP 请求到后端登录接口。

npm install axios

创建登录组件

在 Vue 组件中实现登录表单和逻辑。

<template>
  <div>
    <form @submit.prevent="handleLogin">
      <input v-model="username" placeholder="Username" />
      <input v-model="password" type="password" placeholder="Password" />
      <button type="submit">Login</button>
    </form>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      username: '',
      password: '',
    };
  },
  methods: {
    async handleLogin() {
      try {
        const response = await axios.post('http://your-api-url/login', {
          username: this.username,
          password: this.password,
        });
        const token = response.data.token;
        localStorage.setItem('token', token);
        axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
        this.$router.push('/dashboard');
      } catch (error) {
        console.error('Login failed:', error);
      }
    },
  },
};
</script>

存储 Token

将 Token 存储在 localStorage 中,并设置 axios 的默认请求头。

localStorage.setItem('token', token);
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;

路由守卫

使用 Vue Router 的路由守卫保护需要认证的路由。

import router from './router';

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

注销功能

实现注销功能,清除 Token 并重定向到登录页面。

methods: {
  logout() {
    localStorage.removeItem('token');
    delete axios.defaults.headers.common['Authorization'];
    this.$router.push('/login');
  },
}

错误处理

在 axios 拦截器中统一处理 Token 过期或无效的情况。

axios.interceptors.response.use(
  response => response,
  error => {
    if (error.response.status === 401) {
      localStorage.removeItem('token');
      router.push('/login');
    }
    return Promise.reject(error);
  }
);

后端 API 示例

假设后端返回的登录接口响应如下:

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

注意事项

  • 使用 HTTPS 确保 Token 传输安全。
  • 考虑使用 Vuex 管理 Token 状态。
  • 定期刷新 Token 以提高安全性。
  • 避免在客户端存储敏感信息。

vue实现登录加token

标签: vuetoken
分享给朋友:

相关文章

vue实现滚动截屏

vue实现滚动截屏

实现滚动截屏的基本思路 滚动截屏通常指对超出可视区域的长页面进行完整截图。在Vue中,可以通过结合DOM操作、Canvas绘制及第三方库实现。以下是具体方法: 使用html2canvas库实现 安装…

jq 实现 vue

jq 实现 vue

jq 实现 Vue 的核心功能 jq 是一个轻量级的 JavaScript 库,主要用于 DOM 操作和事件处理。虽然它不能完全替代 Vue,但可以通过一些技巧模拟 Vue 的核心功能,如数据绑定、事…

vue实现切换

vue实现切换

Vue 实现切换功能的方法 在 Vue 中实现切换功能可以通过多种方式实现,以下是一些常见的方法: 使用 v-if 和 v-else 指令 通过条件渲染实现切换功能,适用于简单的显示/隐藏场景…

vue滚动实现

vue滚动实现

Vue 滚动实现方法 使用原生滚动 在 Vue 中可以通过 ref 获取 DOM 元素,调用原生滚动方法实现滚动效果。适用于简单场景。 <template> <div ref…

vue实现addclass

vue实现addclass

Vue 实现动态添加 class 的方法 在 Vue 中动态添加 class 可以通过多种方式实现,以下是常见的几种方法: 使用对象语法 通过绑定一个对象到 :class,可以动态切换 cla…

lua 实现vue

lua 实现vue

在 Lua 中实现类似 Vue 的响应式框架需要模拟 Vue 的核心功能,包括数据绑定、模板渲染和依赖追踪。以下是实现的关键思路和代码示例: 响应式数据绑定 使用 Lua 的 __index 和…