1. 程式人生 > >微信小程式---登陸安全認證

微信小程式---登陸安全認證

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')
  },
這樣就會防止資料的洩露。