首页 > 其他分享 >token以及axios响应拦截器请求拦截器

token以及axios响应拦截器请求拦截器

时间:2023-11-15 12:33:01浏览次数:37  
标签:axios 登录 token 拦截器 error response

一、token的介绍

1.概念

访问权限的令牌,本质上是一串字符串

2.创建

正确登录后,由后端签发并返回

3.作用

判断是否有登录状态等,控制访问权限

token以及axios响应拦截器请求拦截器_拦截器

注意:前端只能判断有无token,而后端才能判断token的有效性

4.使用

目标:只有登录状态,才能访问内容页面

1.在utils/auth.js中判断有无token令牌字符串,则强制跳转到登录页面

2.在登录成功后,保存token令牌字符串到本地,再跳转到首页

//1.1 判断无 token 令牌字符串,则强制跳转到登录页
const token = localStorage.getItem('token')
if (!token) {
    location.href = '../login/index.html'
}

token以及axios响应拦截器请求拦截器_字符串_02

此时我们还没登录

我们现在通过改变网址看看能不能直接进入首页

token以及axios响应拦截器请求拦截器_字符串_03


token以及axios响应拦截器请求拦截器_拦截器_04

我们发现,是不能的,它会马上跳转到登录页面

/**
 * 目标1:验证码登录
 * 1.1 在 utils/request.js 配置 axios 请求基地址
 * 1.2 收集手机号和验证码数据
 * 1.3 基于 axios 调用验证码登录接口
 * 1.4 使用 Bootstrap 的 Alert 警告框反馈结果给用户
 */
document.querySelector('.btn').addEventListener('click', () => {
    const form = document.querySelector('.login-form')
    const data = serialize(form, { hash: true, empty: true })
    console.log(data)
    //1.3 基于 axios 调用验证码登录接口
    axios({
        url: '/v1_0/authorizations',
        method: 'POST',
        data
    }).then(result => {
        myAlert(true, '登录成功')
        console.log(result)
        //登录成功,保存token令牌字符串到本地,并跳转到内容列表页面
        localStorage.setItem('token', result.data.token)
        setTimeout(() => {
            //延迟跳转,
            location.href = '../content/index.html'
        }, 1500)
    }).catch(error => {
        myAlert(false, error.response.data.message)
        console.dir(error.response.data.message)
    })
})

登录以后,我们把token令牌字符串保存到本地,跳转到首页

二、axios请求拦截器

1.概念

axios请求拦截器:发起请求之前触发的配置函数,对请求参数进行额外配置

2.使用场所

公共配置和设置时,统一设置在请求拦截器中

3.代码示例

token以及axios响应拦截器请求拦截器_拦截器_05

axios.interceptors.request.use(function (config) {
    const token = localStorage.getItem('token')
    token && (config.headers.Authorization = `Bearer ${token}`)
    //在发送请求之前做些什么
    return config;
}, error => {
    //对请求错误做些什么
    return Promise.reject(error);
});

token以及axios响应拦截器请求拦截器_拦截器_06

三、axios响应拦截器

1.概念

axios响应拦截器:响应回到then/catch之前,触发的拦截函数,对响应结果统一处理

2.什么时候触发成功/失败的回调函数

状态为2XX触发成功回调,其他则触发失败的回调函数

3.代码示例

token以及axios响应拦截器请求拦截器_字符串_07

//响应拦截器
axios.interceptors.response.use(response => {
    // Do something before response is sent
    //对响应数据做一些操作,直接返回服务器的响应结果
    const result = response.data
    return result;
}, error => {
    // Do something with response error
    console.dir(error)
    if (error?.response?.status === 401) {
        alert('身份验证失败,请重新登录')
        localStorage.clear()
        location.href = '../login/index.html'
    }
    return Promise.reject(error);
});


标签:axios,登录,token,拦截器,error,response
From: https://blog.51cto.com/u_15858858/8387925

相关文章

  • jmeter-set up先登录获取token,再测试
    1.顶部加通用的信息头管理,cookie管理器 2.添加setup线程组,用户数为13.添加登录请求4.添加断言,添加debug调试 5.提取json,  6.添加debug,运行后查看是否获取到token 7.设置token为全局变量 8.再添加线程组,线程组可正常设置并发数需要用到token的地方再添加......
  • 使用JWT、拦截器与ThreadLocal实现在任意位置获取Token中的信息,并结合自定义注解实现
    1.简介1.1JWTJWT,即JSONWebToken,是一种用于在网络上传递声明的开放标准(RFC7519)。JWT可以在用户和服务器之间传递安全可靠的信息,通常用于身份验证和信息交换。声明(Claims):JWT包含一组称为声明的信息,声明描述了一些数据。有三种类型的声明:注册声明(RegisteredClaims):这是......
  • SpringBoot定义拦截器+自定义注解+Redis实现接口防刷(限流)
    实现思路在拦截器Interceptor中拦截请求通过地址+请求uri作为调用者访问接口的区分在Redis中进行计数达到限流目的简单实现定义参数访问周期最大访问次数禁用时长#接口防刷配置,时间单位都是秒.如果second秒内访问次数达到times,就禁用lockTime秒access:lim......
  • electron的axios用法
    当在Electron中使用axios库时,你需要在渲染进程的代码中使用它来发起HTTP请求。以下是一个完整的示例,展示了如何在Electron中导入并使用axios库: index.html: ```html<!DOCTYPEhtml><html><head> <title>ElectronAxiosExample</title></head><body> <......
  • 拦截器
    packagecom.comen.interceptor;importcom.comen.edata.bean.User;importcom.comen.edata.tools.JwtUtil;importorg.springframework.web.servlet.HandlerInterceptor;importorg.springframework.web.servlet.ModelAndView;importjavax.servlet.http.HttpServletR......
  • 关于Sa-token过程的一些解析
    1.Sa-Token是什么?Sa-Token是一个基于Java的轻量级身份认证和授权框架,用于简化和加强应用程序的用户认证和权限管理功能。它提供了一套简洁的API,使开发者可以轻松地实现用户登录、权限验证、会话管理等功能。2.如何生成token?根据用户id生成一串token字符串(一般来讲),......
  • redis 使用token实现重复提交
    使用Token实现重复提交介绍在Web开发过程中,重复提交是一个常见的问题。为了防止用户多次提交同一请求,我们可以使用Token实现重复提交的校验。本文将介绍如何使用Redis来实现这一功能。流程图flowchartTDA(生成Token)-->B(存储Token至Redis)B-->C(校验Token)......
  • 如何使用 jest 测试使用 axios 的 httpClient?
    要使用Jest测试使用axios的httpClient,您可以使用Jest提供的模拟功能来伪造对外部API的请求和响应。下面是一个示例测试的代码:首先,安装所需的依赖:npminstallaxiosaxios-mock-adapterjest--save-dev然后,创建一个名为httpService.test.js的测试文件,编写以下代码:importaxiosfrom......
  • 12、SpringMVC之拦截器
    12.1、环境搭建创建名为spring_mvc_interceptor的新module,过程参考9.1节和9.5节12.1.1、页面请求示例<ath:href="@{/test/hello}">测试拦截器</a>12.1.2、控制器方法示例@RequestMapping("/test/hello")publicStringtestHello(){return"succe......
  • axios的this指向问题
    letvue=newVue({ methods:{ testMethod:function(){ //第一个: axios({ method:"post", url:"CartServlet", }).then(response=>{ this.cartJson=response; }); //第二个: axios({ method:"po......