小程序如何做用户登录?如何维护登录状态?

1. 用户登录的流程

小程序的用户登录流程一般经过以下几个步骤:

1.1 用户授权

用户打开小程序后,首先需要授权给小程序获取用户信息,包括微信头像、昵称等,否则小程序无法识别该用户信息。

// 调用微信授权接口:wx.getUserInfo

wx.getUserInfo({

success: function(res) {

console.log(res.userInfo)

}

})

1.2 获取用户登录凭证

小程序需要根据用户登录凭证来识别用户身份,可以通过调用微信登录接口获取。

// 调用微信登录接口:wx.login

wx.login({

success: function(res) {

if (res.code) {

console.log(res.code)

} else {

console.log('登录失败!' + res.errMsg)

}

}

})

1.3 后台获取用户信息

小程序通过后台服务器根据用户登录凭证获取用户信息,包括用户唯一标识openid和会话密钥session_key。

// 获取用户登录凭证code,通过后台服务获取openid和session_key

wx.request({

url: 'https://example.com/onLogin',

data: {

code: code

},

success: function(res) {

console.log(res.data)

}

})

1.4 保存用户登录状态

小程序将用户的openid和session_key保存在本地存储中,作为用户的登录状态使用。

// 将openid和session_key保存在本地存储中,作为用户的登录状态

wx.setStorage({

key: 'openid',

data: openid

})

wx.setStorage({

key: 'session_key',

data: session_key

})

2. 维护用户登录状态

小程序需要在用户首次登录成功后,后续每次进入小程序都能自动识别用户身份,实现用户状态维护和用户信息展示。

2.1 获取用户本地存储信息

小程序在用户进入小程序后,需要从本地存储中获取用户的openid和session_key信息。

// 获取本地存储中的openid和session_key

const openid = wx.getStorageSync('openid')

const session_key = wx.getStorageSync('session_key')

if (!openid || !session_key) {

console.log('用户未登录!')

} else {

console.log('用户已登录!')

}

2.2 校验用户信息是否有效

每次获取到用户的openid和session_key后,需要校验用户信息是否有效,防止被恶意篡改和伪造。

// 后台服务校验用户信息是否有效

wx.request({

url: 'https://example.com/onCheckUser',

data: {

openid: openid,

session_key: session_key

},

success: function(res) {

if (res.data.code === 0) {

console.log('用户信息有效!')

} else {

console.log('用户信息已失效!')

}

}

})

2.3 更新用户登录状态

如果用户信息已失效,需要让用户重新登录授权,并重新保存用户的openid和session_key信息。

// 用户信息已失效,重新登录授权获取新的openid和session_key

wx.login({

success: function(res) {

if (res.code) {

wx.request({

url: 'https://example.com/onLogin',

data: {

code: res.code

},

success: function (res) {

wx.setStorageSync('openid', res.data.openid)

wx.setStorageSync('session_key', res.data.session_key)

console.log('用户登录状态已更新!')

}

})

} else {

console.log('登录失败!' + res.errMsg)

}

}

})

3. 总结

小程序登录状态维护需要授权获取用户信息,获取用户登录凭证,后台获取用户信息,并保存用户登录状态。每次进入小程序需要校验用户信息是否有效,以保证用户信息安全。当用户信息失效时,需要让用户重新登录授权获取新的openid和session_key,更新用户登录状态。