当前位置: 首页 > news >正文

uniapp中token操作:存储、获取、失效处理。

实现代码

  1. 存储token:uni.setStorageSync('token', res.data.result);
  2. 获取token:uni.getStorageSync('token');
  3. 清除token:uni.setStorageSync('token', '');

应用场景

  • 在登录操作中,保存token
	pwdLogin() {....this.$axios.request({url: '.....',method: 'post',params: {username: this.username,password: this.password,...}}).then(res => {if (res.data.code !== 200) {uni.showToast({title: '登录失败',icon: 'error',duration: 2000})} else {// 保存 tokenuni.setStorageSync('token', res.data.result);// 保存用户信息到本地this.getUserInfo();// 登录成功  跳转结构物页面uni.switchTab({url: '../list/list',fail(e) {console.error(e);}})}})},
  • 请求头中获取token携带
/*** 全局配置* 只能配置 静态数据* `content-type` 默认为 application/json* `header` 中`content-type`设置特殊参数 或 配置其他会导致触发 跨域 问题,出现跨域会直接进入响应拦截器的catch函数中*/
export const config = {baseURL: "http://xxxx.com:8000/",header: {accessToken: uni.getStorageSync('token'),contentType: "application/x-www-form-urlencoded",// Content-Type: 'application/json'// 'Content-Type': 'application/json'}
};
  • 响应拦截器中处理token失效
/*** 全局 响应拦截器, 支持添加多个拦截器* 例如: 根据状态码选择性拦截、过滤转换数据** `return res` 继续返回数据* `return false` 停止返回数据,不会进入错误数据拦截,也不会进入catch函数中* `return Promise.reject('xxxxx')` 返回错误信息, 会错误数据拦截,也会进入catch函数中** @param {Object} res 请求返回的数据* @param {Object} config 发送请求的配置数据* @return {Object|Boolean|Promise<reject>}*/
globalInterceptor.response.use((res, config) => {// token失效处理if (res.data.code === 401) {// 登录已失效,请重新登录uni.showToast({title: '登录已失效,请重新登录',icon: 'error',duration: 2000})//清空当前保存的tokenuni.setStorageSync('token', '');// 强制跳转至登录页uni.reLaunch({url: '/pages/login/login',fail(e) {console.error(e);}});}return res;},(err, config) => {console.error("is global response fail interceptor");console.error("err: ", err);console.error("config: ", config);return Promise.reject(err);}
);
http://www.lryc.cn/news/115104.html

相关文章:

  • 乐鑫科技 2022 笔试面试题
  • 实现UDP可靠性传输
  • Zebec Protocol 将进军尼泊尔市场,通过 Zebec Card 推动地区金融平等
  • Qt--动态链接库的创建和使用
  • 设计模式十二:享元模式(Flyweight Pattern)
  • 【LeetCode】88. 合并两个有序数组 - 双指针
  • HarmonyOS应用开发的新机遇与挑战
  • Qt中qmake、构建、运行、清理的区别
  • 【设计模式——学习笔记】23种设计模式——观察者模式Observer(原理讲解+应用场景介绍+案例介绍+Java代码实现)
  • 【奇葩瑞萨-004】RX系列单片机的GPIO初始化
  • 【Git】Git切换地址
  • elementUI点击当前行更改当前行状态(数据更新DOM不更新问题解决)
  • python爬取阿里巴巴商品页面数据api
  • angular-mat-select 多选 实现按选择顺序排序
  • 爬虫010_列表高级_添加_append_extend_修改_查询_in_not int_删除_del_pop_remove---python工作笔记029
  • 微服务服务拆分和远程调用
  • MySQL8.1源码安装与部署
  • algebraic reconstruction technique(ART)
  • oracle11g安装
  • 网络防御(9)
  • Spring核心与设计思想
  • 【stream的使用】使用stream.filter过滤List对象
  • Flink多流处理之connect拼接流
  • 对任意类型数都可以排序的函数:qsort函数
  • vue数据更新table内容不更新解决方法
  • 合宙Air724UG LuatOS-Air script lib API--record
  • 基于Vgg16和Vgg19深度学习网络的步态识别系统matlab仿真
  • Java分布式微服务3——Docker
  • js字符串替换
  • 网络防御(2)