flyio 无感刷新token

flyio 无感刷新tokennpminstallflyiovarFly=require(‘flyio/dist/npm/wx’);varfly=newFly();<!DOCTYPEhtml><html><headlang=”zh-cmn-Hans”><metacharset=”UTF-8″><title>Fly.jsDemo</title><metaname=”renderer”content

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

https://www.jianshu.com/p/b37a86fe0ac7?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

npm install flyio
var Fly=require('flyio/dist/npm/wx');
var fly=new Fly();
<!DOCTYPE html>
<html>
<head lang="zh-cmn-Hans">
    <meta charset="UTF-8">
    <title>Fly.js Demo</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
    <meta name="viewport" content="width=device-width,initial-scale=0.5,user-scalable=no"/>
    <!--[if lt IE 9]>
    <script src="//cdn.bootcss.com/es5-shim/4.5.9/es5-shim.min.js"></script>
    <script src="//cdn.bootcss.com/es5-shim/4.5.9/es5-sham.min.js"></script>
    <script src="//cdn.bootcss.com/json3/3.3.2/json3.min.js"></script>
    <![endif]-->
    <!--[if lt IE 10]>
    <script src="//cdn.bootcss.com/jquery-placeholder/2.3.1/jquery.placeholder.min.js"></script>
    <![endif]-->
    <!--<script src="https://cdn.bootcss.com/axios/0.16.2/axios.js"></script>-->
    <script src="../dist/fly.js"></script>

</head>
<style>
    html {
        font-size: 20px;
        -webkit-user-select: none;
    }
</style>
<body>
<div style="background: teal; font-size: 38px; color: #ffef68; text-shadow: 2px 2px 5px #ffef68; width: 400px; height: 400px; text-align: center">
    <div style="padding-top: 100px"> Fly.js</div>
</div>
open console panel to view log.
<script>

    //import fly from "../index";

    var csrfToken = "";
    //定义公共headers
    fly.config.headers = {"x-tag": "flyio"}
    fly.config.baseURL = "http://www.dtworkroom.com/doris/1/2.0.0/"
    var newFly = new Fly;
    newFly.config = fly.config;
    var log = console.log
    fly.interceptors.request.use(function (request) {
        log(`发起请求:path:${request.url},baseURL:${request.baseURL}`)
        if (!csrfToken) {
            log("没有token,先请求token...");
            //锁定当天实例,后续请求会在拦截器外排队
            fly.lock();
            return newFly.get("/token").then((d) => {
                request.headers["csrfToken"] = csrfToken = d.data.data.token;
                log("token请求成功,值为: " + d.data.data.token);
                log(`继续完成请求:path:${request.url},baseURL:${request.baseURL}`)
                return request
            }).finally(() => fly.unlock()) //解锁后,会继续发起请求队列中的任务
        } else {
            request.headers["csrfToken"] = csrfToken;
        }
    })

    //  response interceptors
    fly.interceptors.response.use(
        function (response) {
            log("interceptors.response", response)
            //验证失效
            if (response.data.data.tokenExpired) {
                log("token失效,重新请求token...");
                this.lock(); //锁定响应拦截器
                return newFly.get("/token")
                    .then((d) => {
                        csrfToken = d.data.data.token;
                        log("token已更新,值为: " + csrfToken);
                    })
                    .finally(() => this.unlock())
                    .then(() => {
                        log(`重新请求:path:${response.request.url},baseURL:${response.request.baseURL}`)
                        return fly.request(response.request);
                    })
            } else {
                return response.data.data;
            }
        },
        function (err) {
            log("error-interceptor", err)
        }
    )

    fly.get("/test?tag=1")
        .then(function (d) {
            log("请求成功:", d)
        }).catch(function (e) {
        log("请求失败", e)
    })
    fly.get("/test?tag=2")
        .then(function (d) {
            log("请求成功:", d)
        }).catch(function (e) {
        log("请求失败", e)
    })
    fly.get("/test?tag=3")
        .then(function (d) {
            log("请求成功:", d)
        }).catch(function (e) {
        log("请求失败", e)
    })

</script>
</body>
</html>

new Promise()

import store from '@/store'
import config from './config.js'
import Base64 from './base64.js'
import { 
   
	refreshToken
} from '@/api/user'
// H5版本
// #ifdef H5
import Fly from "flyio/dist/npm/fly"
// #endif
//微信小程序和APP版本
// #ifndef H5
import Fly from "flyio/dist/npm/wx"
// #endif
const request = new Fly();
let base64 = new Base64();
request.interceptors.request.use(function(request) { 
   
	request.baseURL = config.baseURL;
	const token = store.state.user.token;
	request.headers['Authorization'] = `Basic ${ 
   base64.encode(`${ 
   config.clientId}:${ 
   config.clientSecret}`)}`;
	if (token) { 
   
		request.headers['Blade-Auth'] = 'bearer ' + token
	} else { 
   
		request.headers['Tenant-Id'] = config.tenantId
	}
	if (request.method === 'POST' && request.headers['Content-Type'] !== 'multipart/form-data') { 
   
		uni.showLoading({ 
   
			title: '',
			mask: true
		});
		setTimeout(()=>{ 
   
			uni.hideLoading()
		},800)
		request.body = { 
   
			...request.body,
			_t: Date.parse(new Date()) / 1000
		}
	} else if (request.method === 'GET') { 
   
		request.params = { 
   
			_t: Date.parse(new Date()) / 1000,
			...request.params
		}
	}
	return request
})
request.interceptors.response.use(function(response) { 
   
	console.log(response,"responense")
	// uni.hideLoading();
	return response.data
}, function(error) { 
   
	console.log(error, "***********************************")
	// uni.hideLoading();
	let pages = getCurrentPages();
	console.log(pages)
	let route = pages[pages.length-1].route;
	if(route.indexOf('registerLogin') != -1) return;
	console.log(pages)
	if (error.response.data.code == 401) { 
   
		// uni.hideLoading();
		this.lock();
		let _this = this;
		setTimeout(()=>{ 
   
			_this.unlock();
		},0)
		return store.dispatch('refreshToken')
			.then(res => { 
   
				console.log(res,"SSSSSSSSSSS")
				_this.unlock()
				return request.request(error.request);
			})
			.finally(() => _this.unlock())
			.then(() => { 
   
				console.log(`重新请求:path:${ 
   error.request.url},baseURL:${ 
   error.response.baseURL}`)
				return request.request(error.request);
			})
		
		// let request = error.request;
		// let headers = {}
		// headers['Authorization'] =
		// `Basic ${base64.encode(`${config.clientId}:${config.clientSecret}`)}`;
		// const token = store.state.user.token;
		// if (token) { 
   
		// headers['Blade-Auth'] = 'bearer ' + token
		// } else { 
   
		// headers['Tenant-Id'] = config.tenantId
		// }
		// let data = {...request.body}
		// refreshToken(store.state.user.refreshToken, store.state.user.tenantId).then(res => { 
   
		// console.log(res, "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
		// if (res.access_token) { 
   
		// store.commit('SET_TOKEN', res.access_token)
		// headers['Blade-Auth'] = 'bearer ' + res.access_token
		// uni.showLoading({ 
   
		// mask: true
		// })
		// uni.request({ 
   
		// url: request.baseURL + request.url,
		// header: headers,
		// method: request.method,
		// data,
		// success: res => { 
   
		// console.log(res, "真他吗成了")
		// console.log(store.state.user.token, "0000000000")
		// uni.hideLoading();
		// if (request.method === 'GET') { 
   

		// } else { 
   
		// uni.navigateBack({ 
   
		// delta: 1
		// })
		// }
		// },
		// fail: err => { 
   
		// console.log("失败了")
		// }
		// })
		// } else { 
   
		// uni.reLaunch({ 
   
		// url: '/pages/public/registerLogin/registerLogin'
		// })
		// setTimeout(() => { 
   
		// uni.showModal({ 
   
		// content: '当前登录已过期,请重新登录',
		// showCancel: false,
		// confirmColor: '#FF6600',
		// success: (res) => { 
   
		// if (res.confirm) { 
   
		// console.log('用户点击确定');
		// }
		// }
		// });
		// }, 200)
		// }
		// })
	}
})

export default request
export { 
   
	request
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195944.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月7日 下午12:22
下一篇 2025年10月7日 下午1:15


相关推荐

  • 计算机类单位换算,计算机单位换算大全「建议收藏」

    计算机类单位换算,计算机单位换算大全「建议收藏」电脑世界是由0与1组成,其中有数以万计的线路,一条线路传递一个信号,而0代表没有信号,1代表有信号,就像电源开关一样,同一时间只可能有一种状态,所以电脑最基本的单位就是一条线路的信号,我们就把它称作“位”,英文叫做bit,缩写为b。“位”和“字节”其实都是电脑的计量单位,我们可以理解成字节是由位组成的,一个“字节”等于8“位”,Byte是它的缩写.位(bit)这个单位太小,所以字节(Byte)是…

    2022年7月27日
    6
  • 关于知行英语网 AfterClass「建议收藏」

    关于知行英语网 AfterClass「建议收藏」今天听以前一直听的《yellow》,一个MM边解析边放歌,发现它来自知行英语。于是到网上搜了下,发现还不错!http://www.24en.com/coop/afterclass/news/2006

    2022年7月2日
    31
  • 一元线性回归-最小二乘法推导过程

    一元线性回归-最小二乘法推导过程设一元线性回归方程为,数据样本点为,要想使这n个样本点落在一元线性回归方程附近,不妨设误差为,使得没一个样本点落在一元线性回归方程上,因此有恒成立,所以回归直线应满足的条件是:实际值与回归估计值之间的误差平方和最小,即:此时令,原问题就转换成求解二元函数极小值问题,分别对求偏导:令上两式等于零,即最终求出两个数值,一元线性回归方程也就拟合出来了。…

    2022年5月17日
    64
  • 【C++ 程序】 数字推盘游戏(15-puzzle)(EasyX图形界面)

    【C++ 程序】 数字推盘游戏(15-puzzle)(EasyX图形界面)也是比较简单的程序 基于我的博客 C 程序 数字推盘游戏 15 puzzle 的逻辑 运用我的博客 C 程序 井字棋游戏 人 VSLv3 电脑 战绩统计版 EasyX 图形界面 的 EasyX 使用技巧完成此程序 程序 Thisisasimpl puzzlegame include iostream include vector include Windows h include string string Windows h vector iostream

    2026年3月18日
    3
  • WKT解读

    WKT-概念WKT(Well-knowntext)是一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。它的二进制表示方式,亦即WKB(well-knownbinary)则胜于在传输和在数据库中存储相同的信息。该格式由开放地理空间联盟(OGC)制定。WKT-几何对象WKT可以表示的几何对象包括:点,线,多边形,TIN(不规则三角网)及多…

    2022年4月3日
    105
  • Gemini应用新功能:AI音乐生成技术解析

    Gemini应用新功能:AI音乐生成技术解析

    2026年3月16日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号