基于vue 实现token验证的实例代码

yizhihongxing

下面我将详细讲解基于vue实现token验证的实例代码的完整攻略。

步骤一:创建Vue项目

首先,我们需要创建一个Vue项目,这里我们使用Vue-CLI命令行工具来快速生成一个Vue项目。打开终端,运行以下命令:

# 全局安装Vue-CLI
npm install -g @vue/cli

# 创建一个新的Vue项目
vue create vue-token-auth-example

执行完以上命令后,会让你选择一些配置选项,可以选择默认选项或手动配置。

步骤二:安装依赖包

在创建完Vue项目后,我们需要安装一些必要的依赖包。打开终端,切换到项目根目录,执行以下命令:

npm install axios vue-router vuex --save

其中,Axios是一个基于 Promise 的 HTTP 库,可以用来请求后端接口数据;Vue-Router 是 Vue.js 官方的路由管理器,用于页面之间的切换和跳转;Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,主要用于组件之间的通信。

步骤三:实现token验证

1. 创建登录页面

在 Vue 项目中,可以通过 Vue-Router 来实现页面之间的跳转。我们可以在 src/views 目录下创建一个 Login.vue 文件,编写登录页面的代码,下面是一个简单的示例:

<template>
  <div class="login">
    <h2>登录</h2>
    <input type="text" v-model="username" placeholder="请输入用户名">
    <input type="password" v-model="password" placeholder="请输入密码">
    <button @click="login()">登录</button>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        username: '',
        password: '',
      }
    },
    methods: {
      login() {
        // 在这里调用登录接口
      },
    },
  }
</script>

在上面的示例中,我们创建了一个登录页面,并使用了v-model指令来双向绑定用户输入的用户名和密码。登录按钮的单击事件会调用 login 方法,接下来我们就来实现这个方法。

2. 实现登录接口

我们可以使用 Axios 发送 POST 请求来调用后端的登录接口,实现用户登录的功能。在 src/services 目录下创建一个 auth.js 文件,用于管理所有与认证相关的 API 请求,下面是一个简单的示例:

import axios from 'axios'

const authService = axios.create({
  baseURL: process.env.VUE_APP_BASE_API,
})

authService.interceptors.request.use(config => {
  const token = localStorage.getItem('token')
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config
})

export function login(username, password) {
  return authService.post('/login', {
    username,
    password,
  })
}

export function getProfile() {
  return authService.get('/profile')
}

在上面的代码中,我们使用了 Axios 的拦截器,在每个请求中添加了 Authorization 请求头,它的值为我们从本地存储中获取的 token。接着,我们定义了一个登录方法来调用后端的登录接口,该接口会返回一个 token,我们可以将它保存在本地存储中。最后,我们定义了一个获取用户信息的方法,该方法会在每个请求中附带 token。

3. 用户登录

接下来我们回到刚才创建的 Login.vue 文件中,实现用户登录的逻辑。调用 auth.js文件中的 login() 方法来向后端发送登录请求,并将返回的 token 保存到本地存储中:

<script>
import { login } from '@/services/auth'

export default {
  data() {
    return {
      username: '',
      password: '',
    }
  },
  methods: {
    async login() {
      try {
        const response = await login(this.username, this.password)
        localStorage.setItem('token', response.data.token)
        this.$router.push('/profile')
      } catch (error) {
        console.log('登录失败:', error.response.data)
      }
    },
  },
}
</script>

4. 路由拦截

为了保护某些页面只能由认证用户访问,在 Vue-Router 中,可以通过路由导航守卫来进行路由拦截。在 src/router/index.js 文件中,我们添加一个 beforeEach 导航守卫:

import Vue from 'vue'
import Router from 'vue-router'
import Profile from '@/views/Profile.vue'

Vue.use(Router)

const router = new Router({
  routes: [
    {
      path: '/profile',
      name: 'Profile',
      component: Profile,
    },
  ],
})

router.beforeEach((to, from, next) => {
  const token = localStorage.getItem('token')
  if (to.path === '/login') {
    if (token) {
      next('/profile')
    } else {
      next()
    }
  } else {
    if (!token) {
      next('/login')
    } else {
      next()
    }
  }
})

export default router

在上面的代码中,我们定义了一个导航守卫,它会在每次路由切换时执行。在每个路由前,判断用户是否已登录,如果已经登录,就允许用户访问目标页面,否则就重定向到登录页面 (/login)。

步骤四:使用示例

现在,我们已经完成了Vue项目的搭建和token验证的实现,接下来我们来使用示例来测试一下。

1. 测试登录

首先,我们在浏览器中访问 http://localhost:8080/#/login,输入用户名和密码,点击登录按钮,我们就可以看到控制台输出一条登录成功的信息。

2. 测试路由拦截

接下来,我们尝试访问路由守卫所保护的 /profile 页面,可以发现我们被重定向到了登录页面。同样,如果我们将 /profile 页面的路由守卫注释掉,我们就可以在登录后访问 /profile 页面。

总结

这就是基于 Vue 实现 token 验证的完整攻略。我们通过 Axios 发送 POST 请求调用后端的登录接口,保存 token 到本地存储,使用 Vue-Router 实现页面之间的跳转和路由拦截,确保只有认证用户能够访问某些页面。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于vue 实现token验证的实例代码 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue项目的html如何引进public里面的js文件

    在Vue项目中,我们可以将静态资源(例如图片、样式表、JavaScript文件等)放在public文件夹中,然后在HTML中通过引入该文件夹中的文件来使用它们。以下是引入public文件夹中JavaScript文件的详细步骤: 1.将需要引入的JavaScript文件放在public文件夹中(例如,创建一个名为script.js的文件)。 2.在HTML模板…

    Vue 2023年5月28日
    00
  • vue实现日历组件

    下面我将为您详细介绍如何使用Vue实现日历组件。 步骤一:创建 Vue 项目 首先,我们需要先创建一个 Vue 项目。您可以使用 Vue CLI 工具来快速创建一个基础的 Vue 项目,命令如下: vue create my-calendar 步骤二:安装依赖 在创建完项目之后,我们需要安装一些需要用到的依赖。具体可参考下方代码块: npm install …

    Vue 2023年5月29日
    00
  • Vue浅析讲解动态组件与缓存组件及异步组件的使用

    Vue浅析讲解动态组件与缓存组件及异步组件的使用 在Vue的开发中,组件化是非常重要的一个概念。而动态组件、缓存组件、异步组件也是Vue中非常常用而且重要的一部分。本文将带你对这三个组件做一个浅析讲解,并给出两个示例来说明。 动态组件 动态组件在Vue中允许我们在多个组件之间进行动态切换。简单来说,当我们需要在一组组件中动态地切换展示哪个组件的时候,使用动态…

    Vue 2023年5月28日
    00
  • 解决vue单页面应用进入页面加载所有 js 的问题

    解决 Vue 单页面应用进入页面加载所有 js 的问题需要使用到 webpack 的代码分割功能。 Webpack 提供了代码分割功能,通过将应用中的代码分割成多个块(chunk),可以实现按需加载,减少首次加载时间。 以下是详细攻略: 步骤一:配置 webpack 在 webpack.config.js 中进行配置,启用代码分割功能,并将其设置为按需加载。…

    Vue 2023年5月28日
    00
  • 解决vue addRoutes不生效问题

    解决 Vue addRoutes 不生效问题 在 Vue 动态添加路由时,如果使用了 addRoutes 方法,可能会遇到路由不生效的问题。这种情况一般出现在使用了路由懒加载的情况下,因为路由懒加载会生成异步组件,而 addRoutes 只针对同步组件进行路由添加。下面是解决这个问题的步骤。 步骤一:重置路由表 在动态路由添加前,需要先重置 router 的…

    Vue 2023年5月27日
    00
  • vue cli 全面解析

    Vue CLI 全面解析 什么是Vue CLI Vue CLI是一个基于Vue.js进行快速开发的标准化工具,提供了快速生成Vue项目的能力,对于开发和构建大型Vue.js应用非常有帮助。它包含了一套插件和预设,可以让你在几分钟内即可创建Vue项目,配置工具链。 安装Vue CLI 要安装Vue CLI,我们首先需要安装Node.js。我们可以去Node.j…

    Vue 2023年5月27日
    00
  • 一文搞懂Vue3中toRef和toRefs函数的使用

    一文搞懂Vue3中toRef和toRefs函数的使用 Vue3引入了toRef和toRefs函数,可以让我们更加便捷地操作和使用响应式数据。下面来详细讲解一下它们的使用方法。 toRef函数 toRef函数可以将一个响应式对象的属性转化为一个ref对象,使得这个属性可以被“单独响应”。 用法 const { toRef } = Vue3; const obj…

    Vue 2023年5月28日
    00
  • vue3的ref、isRef、toRef、toRefs、toRaw详细介绍

    请听我为您详细介绍vue3中ref、isRef、toRef、toRefs、toRaw的作用和用法。 一、ref ref是Vue3提供的一个响应式数据类型,将非响应式数据转换为响应式数据。 ref接收一个参数,返回的是一个对象,通过修改对象的value属性来更新数据。 import { ref } from ‘vue’ const count = ref(0)…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部