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

下面我将详细讲解基于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日

相关文章

  • MVVM模型在Vue中的使用详解

    MVVM是Model-View-ViewModel的缩写,它是一种前端架构模式,旨在将软件应用程序的开发和用户界面的设计分离开来。MVVM模型在Vue中的使用详解可以从以下几个方面来讲解: 1. MVVM模型在Vue中的基本原理 Vue.js是一种基于MVVM架构模式的JavaScript库,大体上遵循了MVVM的设计思路。Vue中的Model用来存储数据,…

    Vue 2023年5月28日
    00
  • vue实现水波涟漪效果的点击反馈指令

    Vue 是一个流行的现代 JavaScript 框架,它提供了丰富的动画和效果特性,其中之一就是在用户点击元素时显示水波涟漪效果。本攻略将介绍如何在 Vue 中实现这一效果。 步骤一:安装依赖 要实现水波涟漪效果,我们需要使用一个名为 Vuetify 的 UI 框架,它已经包含了这一特性。因此,安装 Vuetify 是必要的。 首先,我们需要安装 Vueti…

    Vue 2023年5月28日
    00
  • Vue实现文件批量打包压缩下载

    讲解”Vue实现文件批量打包压缩下载”的完整攻略。 一、问题描述 在Vue项目中,我们有时需要将多个文件打包成一个压缩文件并提供下载。那么如何使用Vue来实现这个需求呢? 二、解决方案 我们可以使用JSZip和FileSaver.js这两个库来实现此功能。 2.1 安装依赖 首先需要安装的是 jszip 和 file-saver: npm install j…

    Vue 2023年5月28日
    00
  • vue编写的功能强大的swagger-ui页面及使用方式

    什么是Swagger-UI页面? Swagger UI是一个通过注解的方式为 RESTful API 描述文档生成在线文档界面的工具。通过Swagger UI,我们可以详细地查看到API接口的信息,包括接口名称、接口描述、请求地址、请求方式、参数类型、参数描述、响应状态码等等。Swagger UI可以很方便地帮助我们对API接口进行测试与调试。 如何使用Vu…

    Vue 2023年5月28日
    00
  • vue两次赋值页面获取不到的解决

    当使用Vue.js时,有时会出现在两次赋值后页面获取不到这个值的问题。这可能是由于Vue.js的异步更新导致的。以下是解决这个问题的几个方法: 方法一:使用Vue.js提供的异步更新机制 Vue.js提供了一个特殊的$nextTick方法,可以使用它在DOM更新后立即执行代码。因此,可以在重复赋值之后调用此方法,以确保您获取到正确的值。下面是一个示例代码: …

    Vue 2023年5月27日
    00
  • 简单理解Vue条件渲染

    简单理解Vue条件渲染 Vue条件渲染是指根据指令或者表达式的值,控制元素的显示或隐藏。常见的条件渲染指令包括 v-if、v-else、v-else-if和v-show。 v-if 指令 使用 v-if 指令可以根据表达式的值来决定元素是否显示。如果表达式的值为 true,则元素会显示;反之则不显示。例如: <template> <div&…

    Vue 2023年5月27日
    00
  • 关于vue-i18n在单文件js中的使用

    下面是关于vue-i18n在单文件js中的使用的完整攻略: 1. 安装vue-i18n 首先,我们需要安装vue-i18n,可以使用npm或yarn来安装,以下是命令: # 使用npm安装 npm install vue-i18n –save # 使用yarn安装 yarn add vue-i18n 2. 配置vue-i18n 在Vue项目中,我们可以通过…

    Vue 2023年5月28日
    00
  • Vue组件之间传值/调用几种方式

    下面我将分享一下Vue组件之间传值/调用几种方式的完整攻略。 1. 父子组件之间传值 1.1. Props 驱动方式 在Vue中,通过Props可以将数据以标签属性的方式传递给子组件。我们可以在子组件中通过props属性接收父组件传递过来的数据,进而渲染到页面上。下面是一个示例: <!–父组件–> <template> <d…

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