亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

小程序?qū)崿F(xiàn)登錄功能

 更新時(shí)間:2022年09月08日 15:35:17   作者:沐小俠  
這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了小程序?qū)崿F(xiàn)登錄功能的具體代碼,供大家參考,具體內(nèi)容如下

小程序可以通過(guò)微信官方提供的登錄能力方便地獲取微信提供的用戶身份標(biāo)識(shí),快速建立小程序內(nèi)的用戶體系。

1、前端調(diào)用wx.login獲取code,再調(diào)用后端接口傳遞code

注意:code是臨時(shí)的,只有5分鐘的使用時(shí)間,而且只能使用一次

2、后端用獲取的code與微信接口服務(wù)換取openid(用戶唯一標(biāo)識(shí))與session_key(可以用于解密私密信息encrydata,現(xiàn)在只能獲取頭像和昵稱),然后生成一個(gè)自定義登錄狀態(tài)的token,自定義登錄態(tài)與openid和session_keysession關(guān)聯(lián)。

注意:不可以把解析出來(lái)的openid和session_key直接返回給前端,會(huì)造成信息安全問(wèn)題

3、將token返回給前端

4、前端緩存token

5、用戶登錄時(shí),登錄接口獲取到token,再調(diào)用其他接口時(shí),攔截器進(jìn)行攔截,如果token有效,則放行請(qǐng)求;如果token失效(不存在、過(guò)期、格式不正確等原因),則無(wú)法訪問(wèn)該接口,需要重新登錄。

說(shuō)明:如果覺得token驗(yàn)證太過(guò)復(fù)雜,也可以退而求其次,采用微信小程序自帶的wx.checkSeesion檢查下發(fā)的session_key是否過(guò)期(固定為兩天)。

wx.checkSeesion是前端檢查,非常方便,但是缺點(diǎn)也很明顯:耗時(shí)長(zhǎng),通常需要300+ms ,另外前后端傳遞私密數(shù)據(jù)時(shí),需要額外考慮數(shù)據(jù)安全問(wèn)題(以openid為例,前端每次需要傳遞openid時(shí),都需要先獲取臨時(shí)code,再傳遞給后端,后端再用code換取openid,開銷極大),因此正式開發(fā)時(shí)極不建議使用wx.checkSeesion,token驗(yàn)證方式可以較好解決上述問(wèn)題。

核心代碼:

// pages/my/my.js
Page({

? ? /**
? ? ?* 頁(yè)面的初始數(shù)據(jù)
? ? ?*/
? ? data: {
? ? ? ? loginOk: false,
? ? ? ? userInfo: null
? ? },

? ? /**
? ? ?* 生命周期函數(shù)--監(jiān)聽頁(yè)面加載
? ? ?*/
? ? onLoad: function (options) {
? ? ? ? //驗(yàn)證是否登錄
? ? ? ? this.checklogin()
? ? },
? ? checklogin() {
? ? ? ? const token = wx.getStorageSync('token')
? ? ? ? const that = this
? ? ? ? if (token) {
? ? ? ? ? ? wx.request({
? ? ? ? ? ? ? ? url: 'http://127.0.0.1:3000/checklogin',
? ? ? ? ? ? ? ? method: 'get',
? ? ? ? ? ? ? ? data:{
? ? ? ? ? ? ? ? ? ? token:token
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? success(res) {
? ? ? ? ? ? ? ? ? ? that.setData({?
? ? ? ? ? ? ? ? ? ? ? ? loginOk: res.data.is_login,
? ? ? ? ? ? ? ? ? ? ? ? userInfo: res.data.userInfo
? ? ? ? ? ? ? ? ? ? ?})
? ? ? ? ? ? ? ? }
? ? ? ? ? ? })
? ? ? ? } else {
? ? ? ? ? ? that.setData({ loginOk: false })
? ? ? ? }
? ? },
? ? login() {
? ? ? ? const that = this
? ? ? ? // 推薦使用wx.getUserProfile獲取用戶信息,開發(fā)者每次通過(guò)該接口獲取用戶個(gè)人信息均需用戶確認(rèn),開發(fā)者妥善保管用戶快速填寫的頭像昵稱,避免重復(fù)彈窗
? ? ? ? wx.getUserProfile({
? ? ? ? ? ? desc: '展示用戶信息', // 聲明獲取用戶個(gè)人信息后的用途,后續(xù)會(huì)展示在彈窗中,請(qǐng)謹(jǐn)慎填寫
? ? ? ? ? ? success(res){
? ? ? ? ? ? ? ? const userInfo = res.userInfo
? ? ? ? ? ? ? ? console.log(userInfo)
? ? ? ? ? ? ? ? // 登錄
? ? ? ? ? ? ? ? wx.login({
? ? ? ? ? ? ? ? ? ? success(res) {
? ? ? ? ? ? ? ? ? ? ? ? if (res.code) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? //發(fā)起網(wǎng)絡(luò)請(qǐng)求
? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.request({
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? url: 'http://127.0.0.1:3000/getSession',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? method: 'post',
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? data: {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? code: res.code,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? userInfo:userInfo
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? success(res) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 將token保存到數(shù)據(jù)緩存(下次打開小程序無(wú)需重新獲取token)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? wx.setStorageSync('token', res.data.token)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? that.setData({?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? loginOk: true,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? userInfo: userInfo
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?})
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? })
? ? ? ? ? ? }
? ? ? ? })
? ? },
? ? //退出登錄
? ? exit() {
? ? ? ? wx.showModal({
? ? ? ? ? ? content: "確定退出嗎"
? ? ? ? }).then(res => {
? ? ? ? ? ? if (res.confirm) {
? ? ? ? ? ? ? ? this.setData({
? ? ? ? ? ? ? ? ? ? loginOk: false
? ? ? ? ? ? ? ? })
? ? ? ? ? ? ? ? //清空登錄的緩存
? ? ? ? ? ? ? ? wx.removeStorageSync('token')
? ? ? ? ? ? } else if (res.cancel) {
? ? ? ? ? ? ? ? wx.showToast({
? ? ? ? ? ? ? ? ? title: '取消',
? ? ? ? ? ? ? ? ? icon:'error'
? ? ? ? ? ? ? ? })
? ? ? ? ? ? }
? ? ? ? })
? ? }
})

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論