zoukankan      html  css  js  c++  java
  • vue 开发系列(二) vue ajax 拦截

    概要说明

    在开发的过程中,我们需要通过AJAX请求,访问后台获取数据,这个获取数据的时候,当然需要后台需要时登录状态才能访问数据,当没有登录的情况,这个时候我们需要跳转到登录界面进行登录。

    如果每次请求都要做如下处理,我们程序逻辑将无比混乱,ajax 可以为我们解决这个问题。

    具体实现思路是:

    1.发送ajax 请求访问后端数据。

    2.后端如果发现没有登录,那么将会丢出一个exceptionaction 的http 响应头。

    3.这个判断将在ajax 拦截中处理,只要有这个响应头,我们会检查是否有登录token,如果没有就会去到登录界面,如果有则尝试使用token自动登录。

    这个过程将在拦截中完成。

    这个好处是 客户只需要关注业务代码的编写,登录处理放到拦截中处理,而且所有的请求将都会被拦截。

    实现代码

    const axiosInstance = axios.create({
        timeout: 20000,
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'X-Requested-With': 'XMLHttpRequest'
        }
    });
    axios 是我们访问后台的JS框架。
    定义拦截处理。
    function interceptAjax(res){
        var tmp = res.headers["exceptionaction"];
    
        if(!tmp) return res;
        //系统已经登录。
        var token = RxUtil.getCache("token");
        if(!token) {
            router.push({
                name: "login"
            });
            return;
        }

    使用拦截器。

    axiosInstance.interceptors.response.use(res=>interceptAjax(res));

    这样每次访问都会经过拦截器,这也给我们一些思路,一些需要统一验证的的访问,可以通过拦截器进行处理。

  • 相关阅读:
    eclipse配置spring4.0环境详细教程
    PostgreSQL精简命令:
    Unity3D项目之 Survival Shooter 记录
    Unity UGUI 实现简单拖拽功能
    Unity UGUI实现Button按钮长按状态的判断
    Unity获取文件夹下指定类型的文件数量
    Unity5 AssetBundle打包加载及服务器加载
    Unity5.X 新版AssetBundle打包控制
    Unity基于DFGUI的TreeView设计
    Unity5.X 新版AssetBundle使用方案及策略
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/8836435.html
Copyright © 2011-2022 走看看