封装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 ...
随机推荐
- 简单谈谈Netty的高性能之道
传统RPC 调用性能差的三宗罪 网络传输方式问题:传统的RPC 框架或者基于RMI 等方式的远程服务(过程)调用采用了同步阻塞IO,当客户端的并发压力或者网络时延增大之后,同步阻塞IO 会由于频繁的w ...
- telnet访问出现telnet:Unable to connect to remote host: No route to host
Linux下的防火墙默认是不允许telnet服务通过的,所以,当防火墙不允许telnet服务通过时就会出现上面的这种情况,可以将防火墙关闭或者勾选允许telnet服务即可解决如上的问题.
- KVM操作命令
1.查看KVM虚拟机配置文件 Kvm虚机创建 例子 /home/work/kvm-host一下操作目录 qemu-img create -f qcow2 test-Ws.qcow2 10G Test- ...
- 阿里云ECS服务安装 nginx+php+MariaDB完整版
安装 Nginx想在 CentOS 系统上安装 Nginx ,你得先去添加一个资源库,像这样: vim /etc/yum.repos.d/nginx.repo使用 vim 命令去打开 /etc/yum ...
- Spring Data Redis实战之提供RedisTemplate
参考: http://www.cnblogs.com/edwinchen/p/3816938.html 本项目创建的是Maven项目 一.pom.xml引入dependencies <depen ...
- 攻防世界--python-trade
测试文件:https://adworld.xctf.org.cn/media/task/attachments/69c8f29912ae4f679d92a6cd36c33196.pyc 这里需要用到一 ...
- spring(五):spring中Aware接口的使用
spring中自定义组件需要使用spring的底层组件时,可以通过自定义组件实现相关XxxAware接口,重写其中的方法进而实现 例如:自定义一个组件,该组件中需要使用ApplicationConte ...
- sessionStorage 使用方法
作为html5中Web Storage的一种存储方式,localStorage和sessionStorage一样都是用来存储客户端临时信息的对象. W3c上给的介绍是这两者区别在于前者用于持久化的本地 ...
- python-内置常量
引言 Python的内置常量不多,只有6个,分别是True.False.None.NotImplemented.Ellipsis.__debug__ 一.True 1.True是bool类型用来表示的 ...
- overload和override的含义和区别
重载(overload)和重写/覆盖(override)是Java多态性的不同表现形式. 重载(overload) (1) 重载是通过不同的方法参数来区分的,如不同的参数个数.顺序.类型. (2) 不 ...