| | |
| | | import weappJwt from './weapp-jwt.js'; |
| | | const utils = require('../utils/util.js') |
| | | let Constant = require('../utils/constant.js') |
| | | let app = getApp() |
| | | let ACCESS_TOKEN_KEY = 'AccessToken' |
| | | let API = (params) => { |
| | | // console.log(params,2) |
| | | let tokenInfo = wx.getStorageSync(ACCESS_TOKEN_KEY) |
| | | // console.log(tokenInfo, 3) |
| | | let currentDateTime = new Date().getTime() |
| | | if (!tokenInfo) { |
| | | wx.reLaunch({ |
| | |
| | | }) |
| | | return |
| | | } |
| | | //设置登录时间为七天 判断token是否失效 |
| | | let effectiveTime = 7 * 60 * 60 * 24 * 1000 |
| | | // 判断当前时间与token存入的时间相比较,如果大于七天则重新登录 |
| | | if (((currentDateTime - tokenInfo.ExpreTime) > effectiveTime) && tokenInfo.isNeedToken) { |
| | | const token = tokenInfo.Token; |
| | | const refresh_token = tokenInfo.RefreshToken |
| | | if (!refresh_token) { |
| | | wx.reLaunch({ |
| | | url: '/login/login/index', |
| | | }) |
| | | return |
| | | } |
| | | //解析token |
| | | const jwt_token = decryptJWT(token); |
| | | // 获取token失效时间 |
| | | const exp_token = getJWTDate(jwt_token.exp).getTime(); |
| | | // token失效状态 |
| | | const isExpireByToken = currentDateTime >= exp_token |
| | | //解析refreshtoken |
| | | const jwt_refresh_token = decryptJWT(refresh_token); |
| | | // 获取refreshToken失效时间 |
| | | const exp_refresh_token = getJWTDate(jwt_refresh_token.exp).getTime(); |
| | | // refreshToken失效状态 |
| | | const isExpireByRefreshToken = currentDateTime >= exp_refresh_token |
| | | // 判断 token和refreshToken是否都失效,都失效则跳转登录 |
| | | if ((isExpireByToken && isExpireByRefreshToken) && tokenInfo.isNeedToken) { |
| | | RefreshToken() |
| | | } |
| | | // 判断 token 失效但refreshToken没失效 |
| | | if ((!isExpireByToken && isExpireByRefreshToken) && tokenInfo.isNeedToken) { |
| | | tokenInfo.Token = refresh_token |
| | | wx.setStorageSync(ACCESS_TOKEN_KEY, tokenInfo) |
| | | } |
| | | let defaultParams = { |
| | | url: '', |
| | |
| | | fail: function () {}, |
| | | complete: function () {} |
| | | } |
| | | |
| | | let requestParam = Object.assign(defaultParams, params) |
| | | // 判断是否要添加token |
| | | if (tokenInfo.isNeedToken == true) { |
| | |
| | | header: requestParam.header, |
| | | success: res => { |
| | | let result = res.data |
| | | if (result.data != undefined && result.data == 401) { |
| | | if (result.Data != undefined && result.Data == 401) { |
| | | RefreshToken() |
| | | return |
| | | } |
| | | if (result.code && result.code != 0) { |
| | | wx.showToast({ |
| | | title: result.message, |
| | | icon: 'error', |
| | | duration: 1500 |
| | | }) |
| | | RefreshToken() |
| | | return |
| | | if (result.Code && result.Code != 0) { |
| | | if (result.Code == -3) { |
| | | wx.showModal({ |
| | | title: result.Message, |
| | | complete: (res) => { |
| | | if (res.cancel) { |
| | | |
| | | } |
| | | |
| | | if (res.confirm) { |
| | | |
| | | } |
| | | } |
| | | }) |
| | | |
| | | } else { |
| | | wx.showToast({ |
| | | title: result.Message, |
| | | icon: 'error', |
| | | duration: 1500 |
| | | }) |
| | | RefreshToken() |
| | | return |
| | | } |
| | | } |
| | | requestParam.success(res) |
| | | }, |
| | |
| | | |
| | | } |
| | | const RefreshToken = () => { |
| | | wx.reLaunch({ |
| | | url: '/login/login/index', |
| | | }) |
| | | return |
| | | |
| | | // 获取账户信息 |
| | | // let accountInfo = JSON.parse(wx.getStorageSync("AccountInfo")) |
| | | |
| | | // console.log(accountInfo,60) |
| | | let accountInfo = wx.getStorageSync("AccountInfo") |
| | | // 获取登录的用户信息 |
| | | // let userInfo = wx.getStorageSync("LoginUserInfo"); |
| | | // let sysInfo = app.globalData.sysInfo; |
| | | // console.log('打印userInfo', userInfo) |
| | | // let data = { |
| | | // SoftType: Constant.SoftType, |
| | | // SoftTag: Constant.SoftTag, |
| | | // LoginName: accountInfo.LoginName, |
| | | // LoginPwd: accountInfo.LoginPwd, |
| | | // CorpID: Constant.CorpID, |
| | | // WxCode: accountInfo.WxCode, |
| | | // UJsCode: accountInfo.UJsCode, //是否就是jsCode有待确认 |
| | | // UAvatarUrl: userInfo == null ? "" : userInfo.avatarUrl, |
| | | // UCity: userInfo == null ? "" : userInfo.city, |
| | | // UProvince: userInfo == null ? "" : userInfo.province, |
| | | // UNickName: userInfo == null ? "" : userInfo.nickName, |
| | | // UGender: userInfo == null ? "" : userInfo.gender + "", |
| | | // SBrand: sysInfo.brand, |
| | | // SModel: sysInfo.model, |
| | | // SPlatform: sysInfo.platform, |
| | | // SVersion: sysInfo.version |
| | | // } |
| | | let data = { |
| | | LoginName: accountInfo.phone, |
| | | LoginPwd: accountInfo.password, |
| | | Software: Constant.Software |
| | | } |
| | | // console.log(JSON.stringify(data),110) |
| | | // wx.request({ |
| | | // url: Constant.BASE_SERVER_URL + "User/UserLogin/FromCorpWechatApplet@V1.0", |
| | | // method: 'POST', |
| | | // data: data, |
| | | // header: { |
| | | // 'content-type': 'application/json' |
| | | // }, |
| | | // fail: function (err) { //请求失败 |
| | | // wx.showModal({ |
| | | // content: '网络信号不好', |
| | | // showCancel: false, |
| | | // confirmColor: "#39b5de" |
| | | // }); |
| | | // }, |
| | | // success: function (res) { |
| | | // console.log(res, "新的token信息") |
| | | wx.request({ |
| | | url: Constant.BASE_AUTH_URL + "Auth/User/Login/LoginSoftwareStandardBySystemAccount@V1.0", |
| | | method: 'POST', |
| | | data: data, |
| | | header: { |
| | | 'content-type': 'application/json' |
| | | }, |
| | | fail: function (err) { //请求失败 |
| | | wx.showModal({ |
| | | content: '网络信号不好', |
| | | showCancel: false, |
| | | confirmColor: "#39b5de" |
| | | }); |
| | | }, |
| | | success: function (res) { |
| | | // console.log(res, "新的token信息") |
| | | var result = res.data; |
| | | // console.log(result); |
| | | if (result.Code != 0) { |
| | | wx.showToast({ |
| | | title: 'token获取失败,请重新登录', |
| | | icon: "none", |
| | | duration: 2000 |
| | | }) |
| | | return; |
| | | } |
| | | var return_data = result.Data; |
| | | if (return_data.Status != 0) { |
| | | wx.showToast({ |
| | | title: 'token获取失败,请重新登录', |
| | | icon: "none", |
| | | duration: 2000 |
| | | }) |
| | | return; |
| | | } |
| | | let Token = return_data.AccessToken |
| | | let RefreshToken = return_data.RefreshToken |
| | | let isNeedToken = false //是否需要Token 当Token失效的时候 判断是否跳转登录 |
| | | if (Token) { |
| | | isNeedToken = true |
| | | } |
| | | let ExpreTime = new Date().getTime() //获取当前时间戳 |
| | | wx.setStorageSync('AccessToken', { |
| | | Token: Token, |
| | | RefreshToken: RefreshToken, |
| | | ExpreTime: ExpreTime, |
| | | isNeedToken: isNeedToken, |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | |
| | | // var result = res.data; |
| | | // // console.log(result); |
| | | // if (result.Code != 0) { |
| | | // wx.showToast({ |
| | | // title: 'token获取失败,请重新登录', |
| | | // icon: "none", |
| | | // duration: 2000 |
| | | // }) |
| | | // return; |
| | | // } |
| | | //解密 JWT token 的信息 |
| | | function decryptJWT(token) { |
| | | |
| | | // var return_data = result.Data; |
| | | // if (return_data.Status != 0) { |
| | | // wx.showToast({ |
| | | // title: 'token获取失败,请重新登录', |
| | | // icon: "none", |
| | | // duration: 2000 |
| | | // }) |
| | | // return; |
| | | // } |
| | | // let Token = return_data.Token |
| | | // let isNeedToken = false //是否需要Token 当Token失效的时候 判断是否跳转登录 |
| | | // if (Token) { |
| | | // isNeedToken = true |
| | | // } |
| | | // let ExpreTime = new Date().getTime() //获取当前时间戳 |
| | | token = weappJwt(token) |
| | | return token |
| | | } |
| | | |
| | | // wx.setStorageSync('AccessToken', { |
| | | // Token: Token, |
| | | // ExpreTime: ExpreTime, |
| | | // isNeedToken: isNeedToken |
| | | // }) |
| | | // wx.setStorageSync("AccountInfo", JSON.stringify(data)) |
| | | // // 获取新的token后重新调用接口 |
| | | // apiCb(params) |
| | | // } |
| | | // }); |
| | | //将 JWT 时间戳转换成 Date |
| | | function getJWTDate(timestamp) { |
| | | return new Date(timestamp * 1000); |
| | | } |
| | | export default API |