30.(前端)请求拦截器设置token

1.请求拦截器设置的原因

前端中登录过后,我们进入的页面需要从后端的接口中数据来填充给前端。由于我们后端的访问有设置装饰器,必须登录过后才可以进行访问(这也是为什么我之前测试都把装饰器注释掉的原因,不然永远登录失败)。所以,我们需要在请求后端接口时候,发送请求时,携带一个token,告诉他们我们已经登录过了。
简单来说,每次发送请求给后端,就把请求拦截下来,放个拦截器。

2.步骤

  1. 设置默认传递给的地址
  2. 拦截器第一步:定义函数
  3. 第二步:获取token,从sessionStorage中
  4. // 第三步,验证tokenStr是否为空,如果为空就直接返回,不为空就传递给请求头

3.代码展示

import Vue from 'vue'
import App from './App.vue'
import router from './router/index'
// import './assets/css/global.css'
// 引入element-ui
import './plugins/element.js'
// 引入axios:用于登录操作传递数据给后端
import axios from 'axios'
// 引入qs,把登录的参数转成字符串
import qs from 'qs'

// import VueRouter from "vue-router";

Vue.config.productionTip = false
// 给Login.vue 传递axios,使用this就可以获得到.$后是任意写
Vue.prototype.$axios = axios
Vue.prototype.$qs = qs
// 设置默认传递给的地址
// axios.defaults.baseURL = 'http://localhost:5000'

// 设置一个请求拦截器,来设置token
axios.interceptors.request.use(
  // 拦截器第一步:定义函数
  config => {
    // 第二步:获取token,从sessionStorage中
    const tokenStr = window.sessionStorage.getItem('token')
    // 第三步,验证tokenStr是否为空,如果为空就直接返回,不为空就传递给请求头
    if (tokenStr) {
      config.headers.token = tokenStr
    }
    return config
  }
)


new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

4.测试结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
前端与Spring Boot拦截器进行Token校验的基本思路是:前端将用户登录时获取到的Token放在请求的Header中,Spring Boot拦截器通过拦截请求获取Header中的Token,然后根据Token进行校验。 下面是具体的步骤: 1. 前端在用户登录成功后,将Token保存在浏览器的本地存储(localStorage或sessionStorage)中,并在每次请求时将Token放在请求的Header中。例如: ``` axios.defaults.headers.common['Authorization'] = 'Bearer ' + token; ``` 2. Spring Boot拦截器通过实现HandlerInterceptor接口拦截请求,并在拦截器中获取Header中的Token。例如: ``` public class TokenInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String token = request.getHeader("Authorization"); // 根据Token进行校验 if (token == null || !token.startsWith("Bearer ")) { response.setStatus(HttpStatus.UNAUTHORIZED.value()); return false; } // ... return true; } // ... } ``` 3. 在Spring Boot的配置类中配置拦截器,使其生效。例如: ``` @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Autowired private TokenInterceptor tokenInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(tokenInterceptor) .addPathPatterns("/**") .excludePathPatterns("/login"); } // ... } ``` 在上面的代码中,我们将TokenInterceptor添加到拦截器链中,并设置拦截所有请求(除了/login)。 这样,当前端发送请求时,拦截器拦截请求并获取Header中的Token,然后进行校验,如果校验不通过则返回401状态码,否则继续执行请求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想成为数据分析师的开发工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值