当前位置:   article > 正文

vue中给axios添加拦截器,自动携带tokenId_vue中axios设置请求数据开始时的拦截器,传入需要的token

vue中axios设置请求数据开始时的拦截器,传入需要的token

前端请求携带tokenId,来让后端知道自己是谁,以及自己的登陆状态是否过期。在axios中添加拦截器,实现每个请求都自动额外添加tokenId参数。

在src目录下添加一个目录——service,里面新建文件——index.js,在这当中填入代码:

  1. import axios from 'axios';
  2. import router from '../router/index';
  3. // `timeout` 指定请求超时的毫秒数(0 表示无超时时间)
  4. // 如果请求超过 `timeout` 的时间,请求将被中断
  5. const service = axios.create({
  6. timeout: 10000
  7. })
  8. service.interceptors.request.use(config => {
  9. //在这里可以打印axios的请求参数。可以看到post当中的参数是data
  10. console.log(config);
  11. if (localStorage.getItem("tokenId") != null) {
  12. config.data['tokenId'] = localStorage.getItem('tokenId');
  13. } else {
  14. router.push("/main");
  15. }
  16. return config;
  17. }, error => {
  18. Promise.reject(error);
  19. });
  20. export default service;

在main.js文件中就不用引入axios了,引入这个文件即可,类似于引入公共文件一样:

  1. import axios from './service/index';
  2. Vue.prototype.$axios = axios;

这样在组件vue文件中,便可以直接使用this.$axios发起网络请求了:

  1. this.$axios
  2. .post("http://localhost:3000/order", {
  3. //本来每个请求需要撸入这行代码,有了拦截器,可以删掉这行代码了
  4. // tokenId: localStorage.getItem("tokenId"),
  5. orders: "all"
  6. })
  7. .then(body => {
  8. this.orders = body.data.orders;
  9. })
  10. .catch(error => {
  11. console.log(error);
  12. });

过两天更新一下,更新一下response拦截器,实现的功能是当后端的redis发现tokenId过期时候,使页面返回到首页,注销掉登陆的信息,以期客户重新登陆。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/715685
推荐阅读
相关标签
  

闽ICP备14008679号