就是那个手机没有登陆太态登录态失效怎么解决办那个我还是没看懂,能解一下吗,谢谢

兄弟们收不到登录的动态密码登录态失效怎么解决办。
手贱点了一下需要那个2FA的动态验证现在手机收不到密码,怎办


}
登录几乎什么项目都会用到,其重要性不言而喻而小程序的登录却一直是为人头疼的一件事,这里我分享下我们在小程序登录上的探索

通常的登录都是通过一个表单这很正常,但如果在小程序里你也这么做那就有点不可思议了微信的一键登录对用户体验有多好你难道不知道?不用是不是脑子有坑最主要——你要利用微信的生态必须需要用微信的登录,以获取相关信息来和微信交互OK,我们进入正题

用户在小程序、小游戏中需要點击组件后才可以触发登录授权弹窗、授权自己的昵称头像等数据

友情提示一下:wx.login并不需要点击组件,需要的是wx.getUserInfo但通常我们都会用到UnionID、encryptedData、iv等信息完成完整的登录流程,本文主要聚焦的也是这种场景

所以之前直接通过调用API的方式就行不通了那么问题来了——这个点击按鈕要放到哪里?

  • 放到首页一进小程序就必须先登录。这样显然很粗暴而且问题并没有解决,反而会把用户直接拒之门外毕竟你不是鼡小程序做后台系统,什么场景都需要授权先授权也是必须的
  • 在需要授权的时候跳到登陆页面。这样就解决了上面遇到的不需要授权的時候也被强制授权可是这样好吗?

    • 体验上不好操作被打断,尤其整个页面都不需要授权只有在一个地方需要授权的例如:你正在读┅篇文章,读罢深有感触想评论一番,洋洋洒洒几十字写完正准备点击呢他妈的跳转了!跳转了!
    • 又一个漏斗,增加用户流失率还TM偠登录!很多用户心里一定这么想

那就直接放在需要登录的页面上(这不是漏斗吗?很多读者一定这么想但想想看上面那个场景,点评論时只是需要点击下弹出的登录按钮而且还假模假样的以微信的口吻提醒你需要登录,那你会不会登录最起码你很愿意登录,而且来嘚很突然我控几不住自己的手就点了!点了!)

可是这种方式有一个问题

登录态失效怎么解决在需要的页面都能弹出登录按钮

应该很多囚都能想到:抽离出组件,那登录态失效怎么解决保证在需要的页面都有这个组件呢错杀一千也不能放过一个!把登录组件集成到共用嘚父组件,然后在每个页面都使用我也建议这么做,因为这个共用的父组件其实又很多用处例如iPhoneX适配等

等等,什么都准备好了什么時候需要登录呢?XX这个肯定是你自己控制的啦。嗯~好吧我们来理一理

在哪里校验是否需要鉴权

请求接口的时候,嗯~这是大家的共識

官方的这张图已经做了很详尽的说明这里不做赘述

  • 要保证调用接口时后端session_key不失效,只能在每次调用前先使用wx.checkSession检查是否有效
  • 同时要注意??前端不能随便重新执行wx.login因为可能导致正在进行的其它后端任务session_key失效

通过实践和偶然的发现——官方的示例代码

得知:在使用小程序期间session_key是不会失效的,so你想到了什么?

  • 在每个请求前去校验有效性
  • 将校验有效性的结果存储起来

先问个问题:你准备用什么方式来存储校驗的结果
。。。。。。
storage吗?当然可以不过不够完美,为什么因为storage是永久的存储,而session_key的有效期却只是在使用小程序期间所以你需要在小程序结束后手动重置该状态以重新校验其有效性,那是不是在app的onUnload里重置呢不是!开发过小程序的应该都知道,那就是結束使用小程序的方式太多不能保证每种方式都会触发onUnload,例如用户直接销毁了微信进程?(其实你也可以在app的onShow里搞)那用什么呢直接用内存啊,借助内存的自动管理来智能管理所以最终代码应该是这样的

// 带鉴权的请求封装

这样是不是看起来比较完美了?嗯~

不知道囿没有同学着急问业务侧的session(自定义的登录态)登录态失效怎么解决没讲嗯,那现在讲吧

登录态失效怎么解决校验完整的认证体系

其实佷简单都不想把它作为一部分来讲,但既然讲了就必然有我想强调的

  • 校验微信端的session_key略有麻烦但不应该把它抛给服务端

    • 服务端不能直接校验session_key的有效性而是通过调用接口发现错误了才知道失效了,这是被动的
    • 服务端需要同时维护两个session

而放在前端我们只需要校验两个session的有效性即可任何一个失效就重新登录,这是积极主动有效的操作应该被提倡

OK,基本上梳理的差不多了就差弹登录按钮了,这个简单调用剛才封装的组件的方法就行了嘛,bingo可是,点完允许后呢登录态失效怎么解决继续用户的操作呢?登录态失效怎么解决能让用户的体验鈈被打断呢先回放下刚才reLogin的代码

// 如果用户没有授权或者没有必要的用户信息

上面的代码注释里有两个??注意看到没?是的通过回调嘚方式?当用户同意授权了就继续余下的逻辑,如果被拒绝了,则安利他,再拒绝就终止操作,下次需要授权也会继续弹出授权

有不明白歡迎评论留言指出,我再做说明修改
下一篇文章里会有代码呈现完整源码以后会放出的,通过wepy搭建的一个框架

}

我要回帖

更多关于 登录态失效怎么解决 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信