【uniapp】uniapp实现免密登录

一、概要

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

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

二、整体架构流程

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

我们常用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初始化完成时触发并且全局只触发一次,早于全局路由。项目简单使用

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

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: UniApp云开发提供了一种简单高效的方式来实现登录功能。 首先,我们需要在云开发控制台中创建一个云开发项目,并开通云数据库和云函数服务。然后,在本地开发环境中使用UniApp创建一个登录页面,并引用云开发的相关API。 在登录页面中,我们需要提供一个表单用于用户输入手机号和码。当用户点击登录按钮时,我们可以通过uni.request函数发起一个请求,将用户输入的手机号和码传递给云函数。 在云函数中,我们可以使用云数据库来存储用户的登录信息。首先,我们需要获取到用户输入的手机号,并通过云数据库的collection函数获取到对应的数据表。然后,我们可以通过where函数来查询该手机号是否存在于数据库中。如果存在,则比对码是否匹配,如果匹配,则登录成功;如果不存在,则提示用户手机号或码错误。 登录成功后,我们可以将用户的登录状态保存在本地,以便在其他页面中判断用户是否已登录。同时,我们也可以在云函数中返回一个登录成功的标识给前端页面,以便进行后续的操作。 总的来说,UniApp云开发实现登录功能的步骤包括:创建云开发项目、添加云数据库和云函数服务、编写登录页面和相关逻辑、在云函数中实现手机号和码的验证、存储登录状态和返回登录结果。这样,我们就可以借助UniApp云开发快速实现登录功能了。 ### 回答2: uniapp云开发实现登录需要遵循以下步骤: 1. 在云开发控制台创建一个新的云开发环境,并在该环境中开通登录功能。 2. 在uniapp项目中的manifest.json配置文件中,添加云开发相关的配置信息,包括云开发环境ID和云开发操作权限。 3. 在uniapp项目中,创建一个云函数,用于处理用户登录的逻辑。 4. 在前端页面中,创建一个登录按钮,并设置点击事件,通过uni.login()方法获取用户的临时登录凭证。 5. 在登录按钮的点击事件中,调用云函数,将用户的临时登录凭证传递给云函数,并在云函数中调用云开发的登录功能。 6. 云函数中的登录功能会根据用户的临时登录凭证,向微信服务器发起请求,获取用户的唯一标识openid,并将该openid返回给前端页面。 7. 前端页面接收到openid后,将其保存到本地缓存中,作为用户的登录凭证。 8. 可以根据需要,将用户的openid保存到云数据库中,以便后续使用和管理用户的登录状态。 通过以上步骤,就可以实现uniapp云开发的登录功能。登录后,可以根据用户的唯一标识openid进行相关操作,如获取用户信息、管理用户权限等。同时,云开发还提供了丰富的云函数和云数据库等功能,方便开发者进行后续的业务逻辑开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值