在微信小程序中保存登录状态,通常有以下几种方法:
使用本地缓存(wx.setStorageSync / wx.getStorageSync)
在用户登录成功后,通过 `wx.login()` 获取到登录凭证 `code`,然后发送到后台换取 `openId` 和 `sessionKey`。
将 `sessionKey` 保存在本地缓存中,通常使用 `wx.setStorageSync('sessionKey', sessionKey)`。
在每次需要验证登录状态时,从本地缓存中读取 `sessionKey` 并将其添加到请求头中,后端通过 `sessionKey` 验证用户登录状态。
使用登录态维护
微信小程序提供了官方 API,如 `wx.getStorageSync('loginToken')`、`wx.getStorageSync('userInfo')`、`wx.checkSession()` 等来获取用户登录状态和用户信息。
当用户登录时,可以获取到相关登录状态和用户信息,然后通过接口将此信息传递给后端进行验证。
在每次访问需要登录的页面时,可以在请求头中将 Token(如 `loginToken`)加入其中,后端便可通过 Token 进行登录状态验证。
使用中间件拦截请求
在后端中,可以使用一个中间件,在每个请求发生之前进行拦截,检查用户是否登录。
如果用户没有登录,则返回登录页面;否则继续执行目标请求。
建议
选择合适的方法:根据具体需求和项目架构选择合适的登录状态保存方法。如果项目规模较小,且对性能要求不高,可以使用本地缓存。如果项目规模较大,且需要更高的安全性和可扩展性,建议使用登录态维护和中间件拦截请求的方法。
考虑安全性:在保存和使用 `sessionKey` 或 `loginToken` 时,要注意安全性,避免将敏感信息暴露在客户端。
处理登录态过期:需要定期或在特定条件下刷新登录态,以确保用户登录状态的准确性。可以通过定时任务或用户操作(如重新登录)来实现。