| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- import Global from '../utils/global.js'
- let baseUrl=Global.baseUrl
- let tokenUrl = `${baseUrl}/blade-auth/oauth/token?tenantId=000000&username=admin&password=21232f297a57a5a743894a0e4a801fc3&grant_type=password&scope=all&type=account`
- let myConfig={}
- const refreshToken = ()=>{
- return new Promise((resolve,reject)=>{
- uni.request({
- url: tokenUrl,
- method: "POST",
- header:{
- Authorization:"Basic c2FiZXI6c2FiZXJfc2VjcmV0"
- },
- success: (res)=>{
- let token=res.data.token_type+" "+res.data.access_token
- let tokenExprieIn=res.data.expires_in
- let tokenExpireTime = Date.now() + tokenExprieIn * 1000
- let data=JSON.stringify({"token":token,"tokenExpireTime":tokenExpireTime})
- uni.setStorage({key: 'token',data: data})
- resolve(token)
- },
- fail: (err)=>{
- reject(err)
- }
- })
- })
- }
- function getToken () {
- let tokenObj = {}
- try {
- tokenObj = uni.getStorageSync("token")
- tokenObj = tokenObj ? JSON.parse(tokenObj) : {}
- } catch(e) {
- console.error('get token from storage error')
- }
- return tokenObj
- }
- const install = async (Vue, vm) => {
- // 此为自定义配置参数,具体参数见上方说明
- Vue.prototype.$u.http.setConfig({
- baseUrl: baseUrl,
- loadingText: '努力加载中~',
- loadingTime: 800,
- header: {
- 'content-type': 'application/json;charset=UTF-8'
- },
- });
- // 请求拦截,配置Token等参数
- Vue.prototype.$u.http.interceptor.request = (async (config) => {
- const tokenObj = getToken()
- config.header['Blade-Auth'] = tokenObj.token
- if (tokenObj.token && tokenObj.tokenExpireTime) {
- const now = new Date() + 0;
- if (now >= tokenObj.tokenExpireTime) {
- config.header['Blade-Auth']= await refreshToken()
- }
- } else {
- config.header['Blade-Auth'] = await refreshToken()
- }
- return config;
- })
- Vue.prototype.$u.http.interceptor.response = (async (res) => {
- return new Promise((resolve,reject)=>{
- if(res.code == 200) {
- return resolve(res.data);
- }else if(res.code==400){
- return resolve(res);
- }else if(res.code == 401) {
- uni.showToast({
- title: '授权已过期,请重新进入',
- icon: 'none',
- })
- return reject(res);
- } else if(res.code == 500){
- uni.showToast({
- title:'服务器异常',
- icon:'none'
- })
- return reject(res);
- } else {
- // 如果返回false,则会调用Promise的reject回调,
- // 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中,res为服务端的返回值
- return reject(res);
- }
- });
- })
-
- // Vue.prototype.$u.http.interceptor.response = async (res) => {
- // if(res.code == 200) {
- // return res.data;
- // }else if(res.code==401){
- // uni.showToast({
- // title:'授权已过期,请重新进入小程序',
- // icon:'none',
- // })
- // return false
- // }
- // else if(res.code==500){
- // uni.showToast({
- // title:'服务器异常',
- // icon:'none'
- // })
- // }
- // else {
- // console.log(res)
- // // 如果返回false,则会调用Promise的reject回调,
- // // 并将进入this.$u.post(url).then().catch(res=>{})的catch回调中,res为服务端的返回值
- // return false;
- // }
- // }
- }
- export default {
- install
- }
|