vue 实现axios拦截、页面跳转和token 验证

下面我将详细讲解“Vue 实现 Axios 拦截、页面跳转和 Token 验证”的完整攻略。

简介

在 Vue 中,我们常常使用 Axios 发起网络请求。而为了保证数据的安全性和用户的登录状态,我们需要进行拦截、跳转和 Token 验证。下面是具体的实现步骤。

实现步骤

1. 安装依赖

首先,需要在项目中安装两个依赖:axiosvue-routeraxios 用于发送网络请求,vue-router 用于页面跳转。

npm install axios vue-router --save

2. 创建 Axios 实例

在 Vue 中,我们通常不会直接使用 Axios,而是创建一个 Axios 的实例。这个实例中会包含一些默认的配置,例如请求的基础 URL、请求头信息等。

import axios from 'axios';

const AxiosInstance = axios.create({
  baseURL: 'https://api.example.com',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json;charset=utf-8'
  }
});

export default AxiosInstance;

3. 添加拦截器

Axios 的拦截器分为请求拦截器和响应拦截器。我们可以在这里对请求进行一些处理,例如添加 token、处理错误信息等。

import AxiosInstance from '@/service/axios';

// 添加请求拦截器
AxiosInstance.interceptors.request.use(
  config => {
    // 添加 token
    const token = sessionStorage.getItem('token');
    if (token) {
      config.headers.Authorization = token;
    }
    return config;
  },
  error => Promise.reject(error)
);

// 添加响应拦截器
AxiosInstance.interceptors.response.use(
  response => {
    // 处理错误信息
    if (response.data.code !== 200) {
      // 抛出错误信息
      return Promise.reject(response.data.message);
    }
    return response.data;
  },
  error => Promise.reject(error)
);

export default AxiosInstance;

4. 配置路由拦截

为了保证用户在未登录或者 token 失效的情况下无法访问受保护的页面,我们需要在路由中添加拦截器。

import VueRouter from 'vue-router';
import store from '@/store/index';

const router = new VueRouter({
  routes: [
    {
      path: '/',
      name: 'home',
      component: () => import('@/views/Home.vue')
    },
    {
      path: '/login',
      name: 'login',
      component: () => import('@/views/Login.vue')
    },
    {
      path: '/protected',
      name: 'protected',
      component: () => import('@/views/Protected.vue'),
      meta: {
        requireAuth: true // 添加该字段,表示该路由需要登录才能访问
      }
    }
  ]
});

// 路由拦截器
router.beforeEach((to, from, next) => {
  const token = sessionStorage.getItem('token');
  if (to.meta.requireAuth) {
    // 如果该路由需要登录才能访问
    if (token) {
      // 如果已经登录
      next();
    } else {
      // 否则跳转到登录页
      next({
        path: '/login',
        query: { redirect: to.fullPath } // 将跳转的路由 path 作为参数,登录成功后跳转到该路由
      });
    }
  } else {
    // 不需要登录就能访问的页面,直接放行
    next();
  }
});

export default router;

5. 示例

下面是两个示例:

5.1 登录

import AxiosInstance from '@/service/axios';

const login = async (username, password) => {
  const data = {
    username: username,
    password: password
  };
  const response = await AxiosInstance.post('/login', data);
  sessionStorage.setItem('token', response.data.token);
  return response.data;
};

export default {
  login
};

5.2 页面跳转

<template>
  <div>
    <h1>Welcome to Protected Page</h1>
  </div>
</template>

<script>
export default {
  mounted() {
    console.log('protected page mounted');
  }
};
</script>

结语

通过上述步骤的实现,我们已经能够做到拦截请求、页面跳转和 Token 验证了。希望这篇文章对你有所帮助。如果有不懂的地方或者技术上的疑问,欢迎在评论区留言。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue 实现axios拦截、页面跳转和token 验证 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • 一文秒懂通过JavaCSV类库读写CSV文件的技巧

    一文秒懂通过JavaCSV类库读写CSV文件的技巧 什么是CSV文件 CSV文件(Comma-Separated Values,逗号分隔值)是一种常见的文本格式,用来存储结构化数据,其每行都表示一条记录,每个记录使用逗号或其他分隔符分割字段,每个字段的值可以用引号括起来。 例如,以下CSV文件表示了三个人的基本信息: Name,Age,Gender &quo…

    Java 2023年5月19日
    00
  • Spring Boot常用注解(经典干货)

    下面是对应的攻略: Spring Boot常用注解(经典干货) Spring Boot 是一个非常流行的 Java 后端框架,使用注解可以让我们更加方便快捷地进行开发。在这篇文章中,我们将详细讲解 Spring Boot 中常用的注解。 @RestController 在 Spring Boot 中,我们可以通过 @RestController 注解来标记一…

    Java 2023年5月19日
    00
  • Java版水果管理系统源码

    Java版水果管理系统源码攻略 系统介绍 Java版水果管理系统源码是一款基于Java语言开发的水果供应管理系统,主要用于管理水果供应链上的各个环节,包括水果添加、修改、删除、查看等功能,同时还支持销售管理、库存管理、供应商管理等功能,满足了水果供应管理中的各种需求。该系统使用MVC设计模式,采用Java Swing作为前端界面开发框架,使用MySQL数据库…

    Java 2023年5月24日
    00
  • Apache Hudi结合Flink的亿级数据入湖实践解析

    Apache Hudi 是什么? Apache Hudi 是 Apache 基金会下的开源项目,它提供了一个数据湖解决方案,支持增量式的数据处理和可变的数据表现形式。Hudi 最初由 Ubiquiti 区块链团队在 2016 年开发,2019 年捐赠给 Apache 软件基金会。Hudi 的核心特性是 Delta Lake 和 Apache Kafka 支持…

    Java 2023年6月2日
    00
  • Tomcat服务器搭建教程

    Tomcat服务器搭建教程 安装JDK Tomcat服务器需要Java环境支持,因此需要先安装Java Development Kit (JDK)。 访问Oracle官方网站下载页面,选择合适的JDK版本下载。 安装JDK,设置环境变量。 下载Tomcat 访问Apache官网的下载页面,选择最新的稳定版本下载。 解压下载文件至目标文件夹。 配置Tomcat…

    Java 2023年5月19日
    00
  • Spring中@Transactional用法详细介绍

    我来为您详细讲解Spring中@Transactional用法的攻略。 Spring中@Transactional用法详细介绍 一、什么是@Transactional @EnableTransactionManagement注解:开启事务管理器。 @Transactional注解:在类或方法上标记该业务需要事务管理。 二、@Transactional的常用属…

    Java 2023年5月20日
    00
  • 带你详细了解Java值传递和引用传递

    带你详细了解Java值传递和引用传递 Java中传递参数有两种方式:值传递和引用传递。理解这两种方式在Java编程中的应用非常重要。 值传递 在Java中,所有的基本数据类型都是采用值传递。当调用方法时,基本数据类型的参数会被复制一份,传入方法内部,方法内对参数的任何改变都不会影响方法外部的数据。这是因为复制后的参数是一个新的对象,与外界的原始对象没有关系。…

    Java 2023年5月26日
    00
  • MSSQL 2005 安全设置图文教程

    MSSQL 2005是一个常用的数据库管理系统,在使用时需要注意安全问题。下面是详细的MSSQL 2005安全设置攻略。 1. 安装MSSQL 2005 首先要确保安装了最新版本的MSSQL 2005,安装过程中需要保证网络连接畅通,最好禁用防火墙和杀毒软件等安全软件。 2. 创建数据库 在MSSQL 2005中创建数据库可以使用Transact-SQL的C…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部