iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么使用vue和axios实现登录拦截
  • 141
分享到

怎么使用vue和axios实现登录拦截

2023-07-04 13:07:33 141人浏览 薄情痞子
摘要

本篇内容主要讲解“怎么使用Vue和axiOS实现登录拦截”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用vue和axios实现登录拦截”吧!该项目是利用了GitHub 提供的persona

本篇内容主要讲解“怎么使用Vue和axiOS实现登录拦截”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用vue和axios实现登录拦截”吧!

项目是利用了GitHub 提供的personal token作为登录token,通过token访问你的Repository List。通过这个项目学习如何实现一个前端项目中所需要的 登录及拦截、登出、token失效的拦截及对应 axios 拦截器的使用。

准备你需要先生成自己的 github Personal Token( 生成Token )。 Token 生成后 访问Demo,即可查看你的Repository List。

项目结构

.├── README.md├── dist // 打包构建后的文件夹│  ├── build.js│  └── build.js.map├── index.html├── package.JSON├── src│  ├── App.vue│  ├── assets│  │  ├── CSS.css│  │  ├── icon.css│  │  └── loGo.png│  ├── constant│  │  └── api.js // 配置api接口文件│  ├── Http.js // 封装fetch、post请求及http 拦截器配置文件│  ├── index.vue│  ├── login.vue│  ├── main.js│  ├── repository.vue│  ├── router.js // 路由配置文件│  └── store│    ├── store.js │    └── types.js // vuex types└── webpack.config.js

技术栈

  1. Vue 2.0

  2. vue-router

  3. vuex

  4. axios

  5. vue-material

登录拦截逻辑

第一步:路由拦截

首先在定义路由的时候就需要多添加一个自定义字段 requireAuth ,用于判断该路由的访问是否需要登录。如果用户已经登录,则顺利进入路由, 否则就进入登录页面。

const routes = [  {    path: '/',    name: '/',    component: Index  },  {    path: '/repository',    name: 'repository',    meta: {      requireAuth: true, // 添加该字段,表示进入这个路由是需要登录的    },    component: Repository  },  {    path: '/login',    name: 'login',    component: Login  }];

定义完路由后,我们主要是利用 vue-router 提供的钩子函数 beforeEach() 对路由进行判断。

router.beforeEach((to, from, next) => {  if (to.meta.requireAuth) { // 判断该路由是否需要登录权限    if (store.state.token) { // 通过vuex state获取当前的token是否存在      next();    }    else {      next({        path: '/login',        query: {redirect: to.fullPath} // 将跳转的路由path作为参数,登录成功后跳转到该路由      })    }  }  else {    next();  }})

每个钩子方法接收三个参数:

  1. to: Route: 即将要进入的目标 路由对象

  2. from: Route: 当前导航正要离开的路由

  3. next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

    1. next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。

    2. next(false): 中断当前的导航。如果浏览器的 URL 改变了(可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。

    3. next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。

确保要调用 next 方法,否则钩子就不会被 resolved。

完整的方法见 /src/router.js

其中, to.meta 中是我们自定义的数据,其中就包括我们刚刚定义的 requireAuth 字段。通过这个字段来判断该路由是否需要登录权限。需要的话,同时当前应用不存在token,则跳转到登录页面,进行登录。登录成功后跳转到目标路由。

登录拦截到这里就结束了吗?并没有。这种方式只是简单的前端路由控制,并不能真正阻止用户访问需要登录权限的路由。还有一种情况便是:当前token失效了,但是token依然保存在本地。这时候你去访问需要登录权限的路由时,实际上应该让用户重新登录。 这时候就需要结合 http 拦截器 + 后端接口返回的http 状态码来判断。

第二步:拦截器

要想统一处理所有http请求和响应,就得用上 axios 的拦截器。通过配置 http response inteceptor ,当后端接口返回 401 Unauthorized(未授权) ,让用户重新登录。

// http request 拦截器axios.interceptors.request.use(  config => {    if (store.state.token) { // 判断是否存在token,如果存在的话,则每个http header都加上token      config.headers.Authorization = `token ${store.state.token}`;    }    return config;  },  err => {    return Promise.reject(err);  });// http response 拦截器axios.interceptors.response.use(  response => {    return response;  },  error => {    if (error.response) {      switch (error.response.status) {        case 401:          // 返回 401 清除token信息并跳转到登录页面          store.commit(types.LOGOUT);          router.replace({            path: 'login',            query: {redirect: router.currentRoute.fullPath}          })      }    }    return Promise.reject(error.response.data)  // 返回接口返回的错误信息  });

完整的方法见 /src/http.js .

通过上面这两步,就可以在前端实现登录拦截了。 登出 功能也就很简单,只需要把当前token清除,再跳转到首页即可。

关于axios

对于axios,很多刚开始学习vue的人都觉得文档比较难以看懂。我刚开始也是这么觉得的。但通过这么一个项目下来后,发现axios并不难理解。建议在学习axios的时带着下面的目的去看文档会更高效。因为掌握了下面这些内容,基本上就可以无障碍得在项目中使用axios了。

  1. 发起http请求的方法

  2. http 请求成功时返回的数据及其类型

  3. http请求失败的处理

  4. 拦截器的使用

  5. http的配置

axios文档

运行及构建

# install dependenciesnpm install# serve with hot reload at localhost:8080npm run dev# build for production with minificationnpm run build

Vue的优点

Vue具体轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运行速度快等优势,Vue中页面使用的是局部刷新,不用每次跳转页面都要请求所有数据和dom,可以大大提升访问速度和用户体验。

到此,相信大家对“怎么使用vue和axios实现登录拦截”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么使用vue和axios实现登录拦截

本文链接: https://www.lsjlt.com/news/345313.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用vue和axios实现登录拦截
    本篇内容主要讲解“怎么使用vue和axios实现登录拦截”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用vue和axios实现登录拦截”吧!该项目是利用了Github 提供的persona...
    99+
    2023-07-04
  • vue+axios如何实现登录拦截
    这篇文章给大家分享的是有关vue+axios如何实现登录拦截的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。该项目是利用了Github 提供的personal token作为登录t...
    99+
    2024-04-02
  • vue中怎么利用axios实现一个登录请求拦截器
    vue中怎么利用axios实现一个登录请求拦截器,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.安装配置axioscnpm install ...
    99+
    2024-04-02
  • vue axios拦截器怎么使用
    本文小编为大家详细介绍“vue axios拦截器怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue axios拦截器怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、首先axios不支持vue...
    99+
    2023-06-29
  • vue+axios前端实现登录拦截的方法有哪些
    这篇文章主要为大家展示了“vue+axios前端实现登录拦截的方法有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue+axios前端实现登录拦截的方法有...
    99+
    2024-04-02
  • vue路由实现登录拦截
    目录一、概述二、路由导航守卫实现登录拦截一、概述 在项目开发中每一次路由的切换或者页面的刷新都需要判断用户是否已经登录,前端可以判断,后端也会进行判断的,我们前端最好也进行判断。 ...
    99+
    2024-04-02
  • 如何使用SpringBoot拦截器实现登录拦截
    小编给大家分享一下如何使用SpringBoot拦截器实现登录拦截,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!可以对URL路径进行拦截,可以用于权限验证、解决乱码...
    99+
    2023-06-29
  • vue如何实现http登录拦截
    今天小编给大家分享一下vue如何实现http登录拦截的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。路由文件export&nb...
    99+
    2023-07-04
  • 使用vue路由怎么实现一个登录拦截功能
    本篇文章给大家分享的是有关使用vue路由怎么实现一个登录拦截功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、概述vue-router提供了导航钩子:全局前置导航钩子 be...
    99+
    2023-06-14
  • node.js怎么实现登录拦截器
    本文小编为大家详细介绍“node.js怎么实现登录拦截器”,内容详细,步骤清晰,细节处理妥当,希望这篇“node.js怎么实现登录拦截器”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先我们实现一个过滤器expo...
    99+
    2023-07-04
  • react axios请求拦截怎么实现
    本教程操作环境:Windows7系统、react17.0.1版、Dell G3电脑。react axios请求拦截怎么实现react 封装axios请求拦截、响应拦截、封装post、get请求默认你已经创建好了一个react项目首先我们需要...
    99+
    2022-11-22
    axios React
  • SpringBoot通过ThreadLocal怎么实现登录拦截
    本篇内容主要讲解“SpringBoot通过ThreadLocal怎么实现登录拦截”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot通过ThreadLocal怎么实现登录拦截”吧!...
    99+
    2023-06-30
  • SpringBoot拦截器实现登录拦截的示例代码
    可以对URL路径进行拦截,可以用于权限验证、解决乱码、操作日志记录、性能监控、异常处理等  实现代码 新建 interceptor包 添加拦截器代码 package c...
    99+
    2024-04-02
  • 怎么使用Spring MVC拦截器实现一个登录功能
    怎么使用Spring MVC拦截器实现一个登录功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。HandlerInterceptor接口Spring MVC中的Intercep...
    99+
    2023-05-31
    springmvc
  • SpringBoot如何实现登录拦截器
    这篇文章主要介绍“SpringBoot如何实现登录拦截器”,在日常操作中,相信很多人在SpringBoot如何实现登录拦截器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoot如何实现登录拦截器...
    99+
    2023-07-02
  • java 使用过滤器实现登录拦截处理
    目录滤器实现登录拦截处理一、什么是过滤器二、工作原理及生命周期三、过滤器使用filter简易实现登录功能拦截LoginFlitercontroller结果图滤器实现登录拦截处理 一、...
    99+
    2024-04-02
  • vue中怎么实现一个路由拦截器和请求拦截器
    本篇文章给大家分享的是有关vue中怎么实现一个路由拦截器和请求拦截器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。路由拦截器已路由为导向rou...
    99+
    2024-04-02
  • Express+Nodejs中如何实现登录拦截
    这篇文章给大家分享的是有关Express+Nodejs中如何实现登录拦截的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。原来一直不知道怎么在Express+Nodejs里面添加类似...
    99+
    2024-04-02
  • 基于SpringMVC实现网页登录拦截
    目录1.简介2.自定义拦截器3. 登录拦截3.1 先做一个页面3.2 登录拦截1.简介 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进...
    99+
    2024-04-02
  • vue cli+axios踩坑记录+拦截器使用方式,代理跨域proxy
    目录1.首先axios不支持vue.use()方式声明使用2.小小的提一下vue cli脚手架3.axios发送get post请求问题4.axios拦截器的使用1.首先axios不...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作