【uniapp】uniapp实现免密登录

文章目录

    • 一、概要
    • 二、整体架构流程
    • 三、技术名词解释
    • 四 、技术细节
      • 1.存取token有效期?
      • 2.使用setStorageSync而不使用setStorage?
      • 3.使用onLaunch而不使用全局路由?

一、概要

打开一个网页或小程序的时候,我们有时候会自动进入主页,而不是登录页面。

怎么实现这个免密登录呢?

二、整体架构流程

以下是小程序免密登录流程图
在这里插入图片描述

我们常用setStorageSync来存储token,此后根据token是否存在来判断进入哪个页面。

三、技术名词解释

  • setStorageSync:uniapp官方文档:将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。

  • onLaunch:当uni-app 初始化完成时触发(全局只触发一次)

四 、技术细节

1.存取token有效期?

存储token

// 设置token有效期
function setTokenExpiration(key, value, time) {const data = Date.now();const item = {value,Expire: data + time,};wx.setStorageSync(key, item);
}

setStorageSync第二个参数是任意类型,支持被 JSON.stringify 序列化的对象,可以将存储的时间和token值作为对象存入本地。

time是我们要传入token的有效期(ms),一般30天免密登录就是30*24*60*60

获取token

function getTokenExpiration(key) {const data = Date.now();let token = wx.getStorageSync(key);if (!token || token.Expire< data) {return null;}return token.value;
}

判断是否存在token,如果存储token的时间戳小于当前时间戳,则表示已经超过有效期,需要重新登录。

实际项目
在这里插入图片描述

2.使用setStorageSync而不使用setStorage?

  • 相同点
    • 都是微信小程序中用于存储数据的 API
  • 不同点
    • setStorage:
      • 异步接口,存储的时候会在后台进行,并不影响其他操作。
    • setStorageSync
      • 同步接口,会等待存储完成,才继续执行下面代码。

一般项目获取token之后可能要获取其他接口,而其他接口要带token,此时我们就用setStorageSync 同步接口,等获取到token后再去调用其他接口。

不好的点是存储会花费一些时间,可能会可能会阻塞主线程,导致界面卡顿或者无法响应用户的操作。

setStorage 性能相比会好。如果不要求实时性,推荐使用。

3.使用onLaunch而不使用全局路由?

onLaunch初始化完成时触发并且全局只触发一次,早于全局路由。项目简单使用

如果路由跳转逻辑复杂,建议使用全局路由,也好方便管理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/573511.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python学习之-正则表达式

目录 前言&#xff1a;1.re.serach1.1例子&#xff1a; 2.re.match2.1示例1&#xff1a;2.2 示例2&#xff1a; 3.re.findall3.1 示例 4.re.fullmatch4.1 示例1&#xff1a;4.2 示例2: 5.re.split5.1 示例1:5.2 示例2&#xff1a;5.3 示例3&#xff1a; 6.re.sub6.1 示例&#…

【Java程序设计】【C00387】基于(JavaWeb)Springboot的校园食堂订餐系统(有论文)

基于&#xff08;JavaWeb&#xff09;Springboot的校园食堂订餐系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开发过…

|行业洞察·电商|《2024互联网综合电商行业及营销趋势报告-21页》

|趋势洞察库| 关注我 主页个人介绍 查看完整报告 报告的主要内容解读&#xff1a; 互联网综合电商行业概述及品牌分布&#xff1a; 电子商务市场已从高速增长阶段进入成熟发展阶段&#xff0c;2022年交易额增长速度整体放缓。综合电商平台可以分为货架电商、社交电商、即时电…

数据结构/C++:位图 布隆过滤器

数据结构/C&#xff1a;位图 & 布隆过滤器 位图实现应用 布隆过滤器实现应用 哈希表通过映射关系&#xff0c;实现了O(1)的复杂度来查找数据。相比于其它数据结构&#xff0c;哈希在实践中是一个非常重要的思想&#xff0c;本博客将介绍哈希思想的两大应用&#xff0c;位图…

c# 跳转搜索(Jump Search)

与二分搜索一样&#xff0c;跳转搜索是一种针对排序数组的搜索算法。基本思想是通过按固定步骤向前跳跃或跳过某些元素来代替搜索所有元素来检查更少的元素&#xff08;比线性搜索&#xff09;。例如&#xff0c;假设我们有一个大小为 n 的数组 arr[] 和一个大小为 m 的块&…

Java智慧工地源码 智慧工地的价值体现 开发一套智慧工地系统需要多少钱

智慧工地是智慧地球理念在工程领域的行业具现&#xff0c;是一种崭新的工程全生命周期管理理念。它运用信息化手段&#xff0c;通过三维设计平台对工程项目进行精确设计和施工模拟&#xff0c;围绕施工过程管理&#xff0c;建立互联协同、智能生产、科学管理的施工项目信息化生…

Kotlin 中的类和构造方法

Kotlin 中的类与接口和 Java 中的类与接口还是有区别的。例如&#xff0c;Koltin 中的接口可以包含属性声明&#xff0c;与 Java 不同的是。Kotlin 的声明默认是 final 和 public 的。此外&#xff0c;嵌套的类默认并不是内部类&#xff1a;它们并没有包含对其它外部类的隐式引…

Python处理文件系统路径库之pathlib使用详解

概要 Python的pathlib库提供了一种面向对象的方法来处理文件系统路径。它使得路径操作更加直观和易于管理,相比于传统的os.path模块,pathlib提供了更为丰富和灵活的API。 pathlib库 pathlib模块在Python中用于处理文件系统路径。通过使用面向对象的方法,它允许路径表示为P…

15K star!一款功能强悍的手机电脑同屏工具,开源无需root!

在日常工作、生活场景中&#xff0c;经常会遇到需将手机与电脑屏幕进行共享。 今天就给大家推荐一款Android实时投屏神器&#xff1a;QtScrcpy。 它可以通过 USB / 网络连接Android设备&#xff0c;并进行显示和控制&#xff0c;且无需root权限。 1、简介 QtScrcpy是一款功…

亮数据——让你的IP走出去,让价值返回来

亮数据——让你的IP走出去&#xff0c;让价值返回来 前言跨境电商最最最大的痛点——让IP走出去超级代理服务器加速网络免费的代理管理软件亮数据解决痛点亮数据优势介绍亮数据浏览器的使用示例总结 前言 当前社会信息的价值是不可想象的&#xff0c;今天在亮数据中看到了个【…

书生浦语大模型实战营第一课笔记

书生浦语大模型全链路开源体系 课程笔记大模型的发展趋势InternLM2的主要亮点模型到应用的典型流程全链路的开源工具 InternLM2技术报告笔记大型语言模型的发展InternEvoModel Structure训练数据 课程笔记 第一节课主要对大模型进行介绍&#xff0c;特别是书生浦语大模型的发展…

InfoNCE loss

InfoNCE loss是一种用于自监督学习的损失函数&#xff0c;通常用于训练对比学习模型&#xff0c;如自编码器或神经网络。全称是"InfoNCE: Contrastive Estimation of Neural Entropy"&#xff0c;基于对比学习的思想&#xff0c;旨在最大化正样本的相似性&#xff0c…