资讯专栏INFORMATION COLUMN

大龄业余程序员要搞个django小程序--09--小程序登陆状态维护之个人中心如何做数据加载

gitmilk / 1406人阅读

摘要:个人中心如何加载数据截图中,显性的数据有登陆我的积分浏览历史我的收藏年会会员成为会员时则显示会员到期时间以上几个数据都是显性的,即登陆后就要立刻显示的。那么这个页面数据的加载应这样设计。

在此之前,先明确:
1、小程序初次载入时检查sessionKey和缓存中是否有userInfo,两个都满足时,将全局变量isLoginGlobal: bool 标记未true

2、小程序的登陆状态依靠全局变量isLoginGlobal: bool 来确认登陆与否

3、其他页面加载时,要优先将isLoginGlobal写入载入data,为true时,再加载缓存中的uesrInfo

4、能加载到userInfo时(确保万无一失,加载某个页面时,再尝试读取一下userInfo的缓存),能加载进来则确认登陆状态,反之则不登陆。

附上代码:

app.js

App({  onLaunch() {    // 检查用户的登陆状态    this.checkLoginStatus()  },  checkLoginStatus() {    // 当sessionKey和userInfo同时存在时才能设置为登陆状态    let u = wx.getStorageSync("userInfo")    let s = checkSessionLogin()    s.then((res) => {      if (u) {        console.log("设置为登陆状态");        this.globalData.isLoginGlobal = true;      } else {        console.log("需要重新登陆");        this.globalData.isLoginGlobal = false;      }    }).catch(err => {      console.log("需要重新登陆");      this.globalData.isLoginGlobal = false;    })  },  globalData: {    // 全局设置,用来设置小程序的登陆状态,依赖sessionKey和userInfo    isLoginGlobal: false,  }})
/** 1、使用wx.checkSession检查微信服务端的sessionKey是否过期 -> 过期则使用wx.login发请求,反之则保持小*    程序的登陆状态* 2、使用wx.login发起请求*/export const checkSessionLogin = () => {  return new Promise((resolve, reject) => {    wx.checkSession({      success: (res) => {        resolve(res)      },      fail: (err) => {        reject(err)      },      complete: (res) => {},    })  })}

这样判断来判断去,还使用全局变量来维护登陆状态会不会很麻烦,其实我也不清楚,不过感觉这样很稳妥,容错率高。

个人中心如何加载数据

截图中,显性的数据有

  • 登陆
  • 我的积分、浏览历史、我的收藏
  • 年会会员(成为会员时则显示会员到期时间)

以上几个数据都是显性的,即登陆后就要立刻显示的。那么这个页面数据的加载应这样设计。

一、登陆状态的判断

  • 获取全局变量isLoginGlobal,为true时,继续读取本地缓存userInfo
  • 能读取到userInfo时,将isLogin = true设置到本页面data中,正式标记已登陆
  • 反之,isLoginGlobalfalse或获取不到userInfo的缓存,设置isLogin = false,标记为未登陆

二、未登陆时,不会展示任何数据,点击登陆

  • 存储token到缓存中
  • 存储userInfo到缓存中
  • 标记isLoginGlobal = true 、标记本页data: isLogin = true
  • 将显性数据写到data

三、如已登陆

在步骤一中,如果标记为登陆,那么应及时向开发者服务器发起请求,接收显性的数据并予以展示,通俗地说,都登陆了,最起码显性的数据得给人家看吧??

总结

  • 依靠全局数据进行状态的标记,有利于各个页面的对全局数据的使用,也方便维护
  • 不管哪个页面,加载时都需要获取全局中的状态,已确认当前是应该登陆还是未登陆
  • 用户数据userInfo是个关键点,因为登陆了你至少得让用户看到个人信息吧,所以这也是维持登陆状态的点之一。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/121406.html

相关文章

  • 大龄业余程序搞个django程序--08--深入理解程序登陆状态维护

    摘要:由于微信小程序没有一套身份验证管理的框架,只提供等几个,所以对于我这种初学者来说,小程序登陆状态管理就显得很麻烦。按照个人的理解,需要携带。总之,和只要其中之一不存在,都要把登陆状态标记为未登陆。不然用户不清楚不确定是否登陆成功。 ...

    zsy888 评论0 收藏0
  • 30 岁的安卓程序还有出路吗,应该怎么规划?

    摘要:在舒伯的生涯阶段里有个确立阶段,岁岁。知识技术安卓程序员需要掌握编程语言应用框架开发工具等这些具体的知识和技术。技术能力与阅历对安卓程序员来讲,知识技术是一方面,是容易习得的,是较浅的层面。 大龄程序员的界定 老早网上有人说,安卓开发干不过30岁,后来又有人说干不过35岁,后来又有人说干不过...

    不知名网友 评论0 收藏0
  • Django搭建个人博客:结束和开始

    摘要:教程看到这里,你已经学会如下内容搭建开发环境博文管理用户管理发表评论若干小功能搭建简单的小博客,以上的功能够用了。教程为了起步平缓,没有展开这方面的内容。陌生人,祝你学业进步事业有成欢迎常到杜赛的个人网站做客 教程看到这里,你已经学会如下内容: 搭建开发环境 博文管理 用户管理 发表评论 若干小功能 搭建简单的小博客,以上的功能够用了。 相信你的志向不止于此。毕竟程序员面试个个造火...

    zqhxuyuan 评论0 收藏0
  • 首次公开,整理12年积累的博客收藏夹,零距离展示《收藏夹吃灰》系列博客

    摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...

    Harriet666 评论0 收藏0
  • 从国企到互联网,一个初入职场将近一年半工作经验程序的「得」与「失」

    摘要:写在前面年月日,我只身一人来到北京,开始人生中的第一份工作,在一家国企从事软件开发工作。因为现在晚饭都是在公司吃,如果不是刷朋友圈,我是不知道北京哪天的夕阳又刷屏了的,因此错过了很多美丽的瞬间,也算一点遗憾吧。 ...

    不知名网友 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<