封装token
let baseApiUrl = 'xxxx'
var app = getApp(); let defaultHeaders = {
'Content-Type': 'application/json'
}
function request(url, data, method, header={}) {
return new Promise(function (reslove, reject) {
wx.request({
url: baseApiUrl + url,
data: data,
method: method,
header: Object.assign(defaultHeaders, header,{
token: wx.getStorageSync('_user_token')
}),
success: function (res) {
if (res.statusCode != 200) {
reject(res);
return
} else if (res.data.code == 10020001){
console.log('invalida token.')
refreshToken().then(resp=>{
console.log('request aggin...')
request(url, data, method, header).then((resp) => {
reslove(resp)
})
})
return
}
reslove(res);
},
fail: function (res) {
reject(res);
},
complete: function (res) {
}
})
})
} function refreshToken(){
return new Promise((resolve, reject) => {
wx.login({
success(res) {
console.log(res)
request('/login/index/index', {
code: res.code
}).then(res => {
var _user_token = res.data.data.token
var _user_openid = res.data.data.openid
var _user_unionId = res.data.data.unionid
var token_time = Date.parse(new Date()) + 23 * 60 * 60 * 60
wx.setStorageSync('_user_token', _user_token);
wx.setStorageSync('token_time', token_time);
wx.setStorageSync('_user_openid', _user_openid);
wx.setStorageSync('_user_unionId', _user_unionId);
defaultHeaders.token = res.data.token
resolve(res.data)
})
},
fail(res) {
reject()
}
})
})
} module.exports = {
refreshToken: refreshToken,
request: request
}
封装token的更多相关文章
- 我的前端工具集(六)Ajax封装token
我的前端工具集(六)Ajax封装token liuyuhang原创,未经允许禁止转载 在单点登陆中,或登陆验证后,不应该每次都验证用户名和密码, 也不应该将用户名密码存入cookie中(虽然很多都 ...
- vue--http请求的封装--token
export const FetchHandler = function (url,opt) { let paramStr = ''; let token = ''; for(key in opt){ ...
- 基于gin框架和jwt-go中间件实现小程序用户登陆和token验证
本文核心内容是利用jwt-go中间件来开发golang webapi用户登陆模块的token下发和验证,小程序登陆功能只是一个切入点,这套逻辑同样适用于其他客户端的登陆处理. 小程序登陆逻辑 小程序的 ...
- angular数据请求 token验证
angualr的token 验证会经常用在登录,注册等地方 对于token的使用方法按照以下步骤进行使用即可 1.新建一个服务 ng g service services /+服务名 eg:ng g ...
- 【WP 8.1开发】推送通知测试服务端程序
所谓推送通知,用老爷爷都能听懂的话说,就是: 1.我的服务器将通知内容发送到微软的通知服务器,再由通知服务器帮我转发消息. 2.那么,微软的推送服务器是如何知道我的服务器要发消息给哪台手机呢?手机客户 ...
- 微信公众号的搭建-第四天(2)-获取并缓存access_token
1. 什么是access_token? 为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台 开放了许多接口,包括自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等 ...
- uni-app学习(三)好用的插件1
1. uni-app学习(三) 1.1. async/await使用 表示异步处理,可使用then函数继续操作,返回的是Promise async function timeout() { retur ...
- ApachShiro 一个系统 两套验证方法-(后台管理员登录、前台App用户登录)同一接口实现、源码分析
需求: 在公司新的系统里面博主我使用的是ApachShiro 作为安全框架.作为后端的鉴权以及登录.分配权限等操作 管理员的信息都是存储在管理员表 前台App 用户也需要校验用户名和密码进行登录.但是 ...
- 第二讲shiro异常及执行流程
在认证过程中,有一个父异常为:AuthenticationException 该异常有几个子类,分别对应不同的异常情况: (1)DisabledAccountException:账户失效异常 (2)E ...
随机推荐
- bfs(火星撞地球)
Meteor Shower 链接:https://ac.nowcoder.com/acm/contest/997/I来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 327 ...
- jquery实现按键增加删除css属性(hide)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- asp.net 连续打印多份HTML页面,出现漏字
在IE8上打印的内容用了CSS 样式,连续打印多份导致的 可以通过改变CSS样式或更换浏览器解决
- harbar仓库的接口测试
一.接口测试命令 api接口文档:https://github.com/goharbor/harbor/blob/release-1.7.0/docs/swagger.yaml 1)查看所属项目的信息 ...
- ubuntu vim8.1编译安装
sudo apt-get install libncurses5-dev python-dev python3-dev libgtk-3-dev libatk1.0-dev libbonoboui2- ...
- django ORM数据库操作
5.使用Django的ORM详细步骤: 1. 自己动手创建数据库 create database 数据库名; 2. 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库) # ...
- Python- 【python无法更新pip】提示python.exe: No module named pip
用Anaconda安装的python 版本无法更新pip导致不能安装第三方库: 用Anaconda Prompt安装第三方库: python -m pip install --upgrade pip ...
- mysql 联合表查询从表即使有索引依然ALL的一个原因
那就是主表和从表的关联字段的编码方式不一样!!! 晕啊,折腾了半天才发现,可能是不知道啥时候mysql更改主体编码方式了,结果导致后来新建的表的关联字段和之前的主表的字段的编码方式不一样 改成一样的编 ...
- bzoj4898 & loj2308 [Apio2017]商旅 最短路+01分数规划
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4898 https://loj.ac/problem/2308 题解 发现我们可以把整个环路分成 ...
- 在项目中使用 Maven 私服
#在项目中使用 Maven 私服 在 Maven settings.xml 中添加 Nexus 认证信息(servers 节点下): <server> <id>nexus-re ...