正如浏览器使用cookie功能一样,在微信小程序中,也需要保持用户的登录状态。由于小程序本身没有cookie,则使用自身的storage来储存用户的session ID信息。
使用的逻辑和cookie一样:当用户每次向服务器发送请求时,都带上这个session参数,由于小程序和服务器都存有相同的session,用户就保持了登录状态,直到服务器发现session过期,并要求用户重新登录。
我们可以类比这样一种场景。一个客户第一次走进一座写字楼,前台帮助他办理了门禁卡,并设置了门禁卡的有效期限。当客户之后再次进入写字楼时,他不需要再找前台而是可以直接刷卡进入写字楼,直到门禁卡过期,他需要再次找前台办理。
其中前台办理门禁卡这个过程就相当于是用户登录并获取session ID,而有效期内再次进入写字楼就相当于携带session ID向服务器发送请求。从这个角度来看,session ID相当于身份认证。
由于wx.login返回的code和服务器返回的session是一一对应的,因此需要在调用login前先检查session是否过期,如果过期则调用login,未过期则使用存在的session。微信官方提供了确定session是否过期的接口wx.checkSession。
onLoad: function () {
wx.checkSession({
success: function(res){
console.log("使用储存的session");
},
fail: function(res){
console.log("重新登录获取session");
}
})
}