微信小程序开发----业务场景

01.refresh_token介绍

微信小程序开发----业务场景_第1张图片

 

  • token:
    • 作用:在访问一些接口时,需要传入token,就是它。
    • 有效期:2小时(安全)。
  • refresh_token
    • 作用: 当token的有效期过了之后,可以使用它去请求一个特殊接口(这个接口也是后端指定的,明确需要传入refresh_token),并返回一个新的token回来(有效期还是2小时),以替换过期的那个token。
    • 有效期:14天。(最理想的情况下,一次登陆可以持续14天。)

安全还是体验

  • 从安全角度来看 token 必须要具有一定的时效性,失效后的 token 不再能标识用是登录状态。
  • 另外也要考虑用户的体验,例如用户在 token 失效的前 1 分钟打开小程序,用户浏览小程序 1 分钟后 token 失效,用户不得不再次去登录,这样的用户体验是极差的。
  • 为了既能保证安全性又兼顾用户体验,咱们需要能够自动刷新 token 的方法,即 refresh_token。

 refresh_token工作机制

 微信小程序开发----业务场景_第2张图片

 

  1. 用户在首次完成登录时会分别得到 token 和 refresh_token
  2. 当 token 失效后(例如2小时之后),调用接口A会返回 401 状态码(这是与后端约定好的规则)
  3. 检测状态码是否为 401,如果是,则携带refreshToken去调用刷新token的接口
  4. 刷新 token 的接口后会返回新的 token 和 refreshToken
  5. 把401的接口A重新发送一遍

注意:
refresh_token也是有过期时间的,只不过一般会比token过期时间更长一些。这就是为啥如果某个应用我们天天打开,则不会提示我们登录,如果是有几周或更长时间去打开时,会再次要求我们登录。
refresh_token一个更常见的名字叫token无感刷新。

 02.refreshToken功能-基本实现

if (data.code === 401) {
    const app = getApp()
    // 调用接口获取新的 token
    const res = await http({
      url: '/refreshToken',
      method: 'POST',
      

你可能感兴趣的:(微信小程序,数学建模,小程序)