微信小程式---登陸安全認證
阿新 • • 發佈:2019-01-07
1.session_key和openId是什麼?session_key
官方說明為:
session_key是微信伺服器生成的針對使用者資料進行加密簽名的金鑰
session_key的用途
(1)對wx.getUserInfo()介面得到“使用者資訊中的密文”進行解密。
(2)對它“稍作處理”,用作維護小程式的登入態。
“稍微處理”大體為:
(1)生成一個隨機數(官方把他叫做3rd_session)
(2)把這個隨機數當session的key,session_key + openid為value。
即:session[3rd_session]=session_key+openid
openIdopenId:使用者唯一標識
即:每個微信使用者在你的小程式的唯一的標識。
2.首先在app.js裡獲取code,寫入以下程式碼:
wx.request({ url: 'http://wangchaow.hk01.bdysite.com/server/index.php/home/index/session', data:{ code:res.code }, success:res=>{ console.log(res) wx.setStorage({ key: 'session_id', data: res.header['Set-Cookie'], }) } })
然後在控制器寫入 以下程式碼:
public function session($code){ if(empty($code)) return false; $appid="wxffc9166906e3df54"; $secret="bb4588daadc78cb462a383f3ba0478e7"; $url="https://api.weixin.qq.com/sns/jscode2session?appid={$appid}&secret={$secret}&js_code={$code}&grant_type=authorization_code"; $ret=https_get($url); $arr=json_decode($ret,true); if(isset($arr['openid'])&&isset($arr['session_key'])){ session('openid',$arr['openid']); session('session_key',$arr['session_key']); }else{ die($ret); } }
然後我們在顯示頁面的js那裡加入以下程式碼:
header:{
Cookie:wx.getStorageSync('session_id')
},
這樣就會防止資料的洩露。