本篇文章給你們帶來的內容是關於小程序和ThinkPHP5結合實現登陸狀態(附代碼),有必定的參考價值,有須要的朋友能夠參考一下,但願對你有所幫助。php
微信小程序中,通常會涉及三種登陸方式:
1. 使用微信帳號登陸
2. 自有的帳號註冊和登陸
3. 使用其餘第三方平臺帳號登陸redis
1. 小程序經過wx.login獲取code,發日後臺,後臺以此向微信API換取session_key和openid;
2. 隨機生成字符串做爲sessionid(key),session_key和openid做爲value,存入redis中,爲了安全,
存入的時候還應設置一個超時的時間;
3. 客戶端將返回的sessionid存入storage,調用那些須要登陸後纔有權限的訪問的後臺服務時,
你能夠將保存在storage中的sessionid取出並攜帶在請求中,後臺代碼中獲取到該sessionid後,
從redis中查找是否有該sessionid存在,存在的話,即確認該session是有效的,
繼續後續的代碼執行,不然進行錯誤處理。數據庫
1. 進入小程序首先經過wx.login獲取code,經過後臺接口發日後臺,後臺以此向微信API換取session_key和openid;
2. 判斷數據庫中有無該openid【惟一標識,需和帳號(手機號)綁定】,
-- 若是數據庫中沒有該openid(說明沒有該帳號):
判斷傳過來的手機號是否爲空(登陸時會將手機號存到全局變量),若是不爲空,則說明是剛登陸過的,而後綁定openid及openid_time(當前時間),
若是手機號也爲空,說明沒登陸過,則返回登陸失敗信息,使客戶端跳轉登陸頁;
-- 若是數據庫中有該openid(說明數據庫中有相對應的手機號),
判斷openid_time距如今的時間是否大於4小時,若是大於,返回登陸失敗信息,使客戶端跳轉登陸頁;
若是小於,則更新openid_time爲當前時間,而後返回登陸成功信息及手機號。
3. 登陸頁面:判斷數據庫中該手機號是否存在,若是存在,則更新openid_time爲當前時間,若是不存在,則添加該手機號用戶。而後跳轉首頁執行wx.login方法,登陸成功,保持登錄狀態。json
1小程序 2微信小程序 3api 4安全 5微信 6markdown 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
date_default_timezone_set('PRC');
|