亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 小程序 > 正文

詳解小程序用戶登錄狀態檢查與更新實例

2020-03-21 15:56:36
字體:
來源:轉載
供稿:網友

這篇文章主要解決以下問題:用戶每次登錄小程序(包括第一次使用)及點擊小程序的每個頁面的時候,我們如何判斷他當前的登錄狀態是否過期?如果過期,如何重新獲取用戶信息并發送至開發者服務器更新用戶信息,以及設置新的用戶登錄狀態?

將這個部分單獨作為一篇文章有兩個原因:

① wx.getUserInfo(OBJECT) 接口調整,廢棄了以前直接獲取用戶信息的方法;

② 上篇文章授權、登錄、session_key、unionId 只梳理了登錄流程而沒有貼實際的代碼,所以這篇文章以代碼實現為主。

1. 代碼邏輯分析

(1)用戶登錄態過期時間如何設置?

在上篇文章中也有提到過,用戶登錄態可以通過前端設置和后端設置兩種方式進行控制。這里我們在前端進行控制,即利用wx.checkSession() 接口來判斷session_key 是否過期來作為用戶登錄態是否過期的標志。如果過期了,則跳轉到統一的登錄頁面引導用戶點擊按鈕重新授權登錄,重新登錄之后session_key 會刷新,相當于在獲取用戶最新信息的同時重新設定了過期時間。

(2)onShow() 與onLoad()

小程序js 中有onShow 與onLoad 兩種事件。兩種事件的區別就在于onLoad 每次打開小程序只加載一次,跳轉到其他頁面再回來的時候這個事件就不會再觸發。而onShow 則每次進入頁面都會觸發,所以我們在進入每個頁面檢查用戶登錄態是否過期的代碼需要放在onShow 中。

(3)重新登錄過程分析

如果用戶登錄態過期,則需要進行重新登錄。登錄過程在上篇文章中也有講過。這里再簡單梳理一下:前端引導用戶點擊按鈕觸發getUserInfo 獲取最新用戶信息 -> 前端調用wx.login() 獲取code -> 前端將code 發送給后端獲取openid 和seesion_key -> 后端寫session 并返回對應session 的唯一標志 -> 前端存儲這個唯一標志。

2. 代碼實例

在每個頁面的onShow 事件中添加以下代碼來檢查當前用戶登錄態是否過期:

wx.checkSession({ success: function () { //session_key 未過期,并且在本生命周期一直有效 return ; }, fail: function () { // session_key 已經失效,需要重新執行登錄流程 wx.navigateTo({  url: "/pages/authorize/index" }) }})

因為進入每個頁面中都需要進行用戶登錄態是否過期的檢查,所以需要有一個公共的授權頁面,當檢查不同過的時候,就跳轉到這個授權頁面引導用戶重新進行授權,授權頁面authorize 代碼如下:

wxml

<view class="container"> <view style='width:100%;padding-left:30rpx;font-size: 28rpx;margin-top:30rpx;'>1、同意當前小程序獲取我的微信頭像;</view> <view style='width:100%;padding-left:30rpx;font-size: 28rpx;margin-top:30rpx;'>2、同意當前小程序獲取我的微信昵稱等其他信息;</view> <button open-type="getUserInfo" bindgetuserinfo="bindGetUserInfo" class="save-btn">授權登錄</button></view>

wxss

page{ height: 100%;}.container{ background-color: #f5f5f9; justify-content: initial;}.save-btn{ width: 690rpx; height: 80rpx; line-height: 80rpx; text-align: center; margin-top:30rpx;  border-radius: 6rpx; box-sizing: border-box; background-color: #e64340; color:#fff;}

js

// pages/authorize/index.jsvar app = getApp();let Domain = app.globalData.domain;Page({  /** * 頁面的初始數據 */ data: { },  /** * 生命周期函數--監聽頁面加載 */ onLoad: function (options) { },  /** * 生命周期函數--監聽頁面初次渲染完成 */ onReady: function () { },  /** * 生命周期函數--監聽頁面顯示 */ onShow: function () { },  /** * 生命周期函數--監聽頁面隱藏 */ onHide: function () { },  /** * 生命周期函數--監聽頁面卸載 */ onUnload: function () { },  /** * 頁面相關事件處理函數--監聽用戶下拉動作 */ onPullDownRefresh: function () { },  /** * 頁面上拉觸底事件的處理函數 */ onReachBottom: function () { },  /** * 用戶點擊右上角分享 */ onShareAppMessage: function () { }, bindGetUserInfo: function (e) { // 獲得最新的用戶信息 if (!e.detail.userInfo){  return; } wx.setStorageSync('userInfo', e.detail.userInfo) this.checkSessionAndLogin(); }, /*  這里使用openid 作為與后端session 連接的標志 檢查是否存在openid,即之前是否登錄過  如果登錄過,檢查session_key 是否過期  如果過期了,remove openid 重新執行login 并將用戶信息發送到服務器端更新  如果沒過期則返回  如果沒登錄過則執行login 并將用戶信息發送到服務器更新 */ checkSessionAndLogin: function () { let that = this; let thisOpenId = wx.getStorageSync('openid');  // 已經進行了登錄,檢查登錄是否過期 if (thisOpenId) {  console.log('have openid')  wx.checkSession({  success: function () {   //session_key 未過期,并且在本生命周期一直有效   wx.navigateBack({});  },  fail: function () {   console.log('but session_key expired');   // session_key 已經失效,需要重新執行登錄流程   wx.removeStorageSync('openid');   that.checkSessionAndLogin();  }  }) } else {  // 沒有進行登錄則先進行登錄操作  console.log('do not have openid');  that.loginAndGetOpenid(); } }, // 執行登錄操作并獲取用戶openId loginAndGetOpenid: function () { console.log('do login and get openid'); let that = this; wx.login({  success: function (res) {  if (res.code) {   wx.request({   url: Domain + '/user/wx_login',   data: {    code: res.code   },   success: function (res) {    res = res.data;    console.log(res)    // 保存openId,并將用戶信息發送給后端    if (res.code === 0) {    wx.showModal({     title: 'set openid',     content: res.data,    })    wx.setStorageSync('openid', res.data);    that.sendUserInfoToServer();    } else {    wx.showModal({     title: 'Sorry',     content: '用戶登錄失敗~',    })    }   }   })  }  } }) }, sendUserInfoToServer: function () {  console.log('now send user info to server'); let userInfo = wx.getStorageSync('userInfo'); let thisOpenId = wx.getStorageSync('openid');  userInfo.openid =thisOpenId;  wx.request({  url: Domain + '/user/updateUser',  method: 'POST',  dataType: 'json',  data: userInfo,  success: function (res) {  res = res.data;  if (res.code === 0) {   wx.navigateBack({});  } else {   wx.showModal({   title: 'Sorry',   content: '同步信息出錯~',   })  }  } }) }})

以上所述是小編給大家介紹的小程序用戶登錄狀態檢查與更新實例詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網網站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性猛交xxxx偷拍洗澡| 国产美女扒开尿口久久久| 欧美高清电影在线看| 亚洲美女av黄| 欧美日韩国产专区| 亚洲免费影视第一页| 国产精品9999| 欧美高清电影在线看| 日韩欧美999| 欧美日韩日本国产| 91精品国产91久久久久久久久| 午夜精品久久久久久久男人的天堂| 亚洲四色影视在线观看| 国产综合久久久久久| 亚洲人成在线观| 亚洲国产欧美一区二区三区同亚洲| 欧美在线不卡区| 伊人伊人伊人久久| 伊人久久免费视频| 日韩欧美在线观看| 成人疯狂猛交xxx| 日韩美女免费线视频| 亚洲欧洲偷拍精品| 成人激情视频小说免费下载| 亚洲精品美女久久| 日韩av资源在线播放| 在线性视频日韩欧美| 一区二区三区四区精品| 亚洲女成人图区| 日韩成人高清在线| 高清一区二区三区日本久| 日韩高清电影免费观看完整版| 91久久综合亚洲鲁鲁五月天| 国产精品吊钟奶在线| 欧美理论在线观看| 亚洲老头老太hd| 欧美放荡办公室videos4k| 97香蕉久久夜色精品国产| 91免费福利视频| 成人天堂噜噜噜| 欧美日韩精品在线视频| 97在线观看免费高清| 精品视频在线播放| 精品欧美激情精品一区| 91精品视频专区| 欧美国产日韩一区| 欧美人在线观看| 国产精品成人aaaaa网站| 国产精品电影在线观看| 中文字幕少妇一区二区三区| 欧美国产亚洲视频| 亚洲一区二区三区视频播放| 国产福利视频一区| 欧美成在线观看| 在线丨暗呦小u女国产精品| 色妞一区二区三区| 国产视频精品va久久久久久| 岛国av午夜精品| 亚洲最大的av网站| 97视频国产在线| 国产日本欧美一区二区三区在线| 亚洲第一av网| 久久伊人91精品综合网站| 成人福利网站在线观看11| 日韩一区二区三区在线播放| 日韩中文字幕在线免费观看| 久久精品色欧美aⅴ一区二区| 97国产一区二区精品久久呦| 九九九久久久久久| 91系列在线播放| 97在线精品视频| 国产精品青草久久久久福利99| 久久97久久97精品免视看| 91精品国产自产在线观看永久| 麻豆国产va免费精品高清在线| 欧洲精品在线视频| 亚洲欧美国产制服动漫| 性欧美亚洲xxxx乳在线观看| 久久天天躁狠狠躁夜夜躁2014| 成人黄色在线播放| 国产精品久久视频| 亚洲精品美女在线观看| 国产精品综合久久久| 精品久久久久久久久中文字幕| 欧美午夜精品久久久久久久| 国产欧美一区二区三区在线看| 欧美夫妻性生活xx| 大胆人体色综合| 国产91ⅴ在线精品免费观看| 精品动漫一区二区三区| 国产男女猛烈无遮挡91| 亚洲免费电影在线观看| 中文字幕欧美日韩精品| 国产精品丝袜一区二区三区| 国产一区欧美二区三区| 亚洲第一福利网站| 国产精品999999| 97在线视频精品| 91免费精品国偷自产在线| 中文字幕日韩精品在线观看| 日韩一区二区av| 国产亚洲福利一区| 亚洲成年人影院在线| 日韩欧美成人免费视频| 亚洲一级黄色片| 色偷偷噜噜噜亚洲男人| 亚洲精品欧美一区二区三区| 国产成人在线视频| 亚洲欧美一区二区三区久久| 在线视频欧美日韩| 国产精品2018| 亚洲欧美日韩国产中文专区| 亚洲天天在线日亚洲洲精| 91美女福利视频高清| 91精品国产一区| 国产99久久精品一区二区| 日韩成人高清在线| 久久精品精品电影网| 久久天堂av综合合色| 亚洲第一免费播放区| 九九热这里只有精品6| 97精品国产97久久久久久免费| 91禁国产网站| 日韩美女福利视频| 日韩中文在线视频| 亚洲另类激情图| 久久精品视频播放| www.久久久久| 欧美大片网站在线观看| 中文字幕日韩欧美| 5566日本婷婷色中文字幕97| 亚洲女性裸体视频| 国产精品久久久久一区二区| 亚洲成人激情在线观看| 九九九热精品免费视频观看网站| xvideos亚洲人网站| 欧美国产日韩在线| 欧美激情2020午夜免费观看| 国内精品国产三级国产在线专| 911国产网站尤物在线观看| 日本19禁啪啪免费观看www| 国产精品白丝jk喷水视频一区| 欧美极品少妇xxxxⅹ裸体艺术| 日韩免费在线电影| 亚洲精品一二区| 国产狼人综合免费视频| 亚洲香蕉av在线一区二区三区| 亚洲男人的天堂网站| 亚洲国产成人精品久久| 欧美肥婆姓交大片| 国模极品一区二区三区| 亚洲日本aⅴ片在线观看香蕉| 国内精品中文字幕| 高跟丝袜欧美一区| 欧美精品中文字幕一区| 欧美理论片在线观看| 国产国产精品人在线视| 亚洲欧美日韩一区二区在线| 久久香蕉国产线看观看av| 久久视频这里只有精品| 国产精品都在这里| 国产成人精品a视频一区www| 国产成人精品日本亚洲| 北条麻妃一区二区三区中文字幕|