全棧項目|小書架|微信小程序-登陸及token鑑權

小程序登陸

以前也寫過微信小程序登陸的相關文章:html

也能夠經過官方的這張時序圖瞭解小程序的登陸流程: 在這裏插入圖片描述小程序

從流程圖上能夠看出微信小程序登陸須要先調用wx.login() 獲取 臨時登陸憑證code ,並回傳到開發者服務器。而後在服務器端調用 auth.code2Session 接口,換取 用戶惟一標識 openid和 會話密鑰 session_key等信息。以後開發者服務器能夠根據用戶標識來生成自定義登陸態,用於後續業務邏輯中先後端交互時識別用戶身份。後端

登陸方式

wx.login() 是在微信小程序端登陸的時候調用,而常見的登陸方式有如下幾種:微信小程序

  • 啓動小程序以後彈出登陸彈窗
  • 點擊特定按鈕登陸
  • 兩者結合實現

登陸實現

我這裏的實現是經過 點擊登陸按鈕 實現登陸。在《小書架》項目中有兩處能夠進行登陸。api

  • 個人頁面,未登陸會顯示登陸區域 在這裏插入圖片描述
  • 在文章詳情頁面,未登陸會彈出登陸彈窗 在這裏插入圖片描述 在點擊了登陸按鈕以後會調用下面的代碼,將登陸憑證發給服務器:
wx.login({
      success: function(loginRes) {
        if (loginRes.code) {
          let userStorageInfo = wx.getStorageSync('userInfo');
          // 請求服務端的登陸接口
          wx.request({
            url: api.loginUrl,
            method: 'POST',
            data: {
              account: loginRes.code, // 臨時登陸憑證
              type: 100, // 100 表示小程序用戶
              userInfo: JSON.stringify(userStorageInfo)
            },

            success: function(res) {
              console.log(res);
              if (res.statusCode == 200) {
                console.log('-----獲得 Token---------');
                wx.setStorageSync('loginToken', res.data.token);
              } else {
                console.log("Error:" + res.errmsg);
              }
            },
            fail: function(error) {
              // 調用服務端登陸接口失敗
            }
          });
        } else {
          // 獲取 code 失敗
        }
      },
      fail: function(error) {
        // 調用 wx.login 接口失敗
      }
    });

當微信小程序端發送code登陸憑證給服務端以後,服務端調用微信提供 的接口,獲取openid等數據。服務器

在這裏插入圖片描述

token 鑑權

在服務器開發中有些接口API是須要登陸後才能使用,好比:收藏、評論等。而如何判斷用戶是否登陸,在移動端常見的手段是經過 token 來驗證登陸的時效性。也就是在用戶登陸以後,生成一個具備有效期的token,返回給客戶端使用,token超過了有效期就說明用戶的登陸狀態失效了,須要從新登陸。微信

ps: token的介紹能夠查看我以前的相關文章。網絡

獲取 token

獲取 token 接口

驗證 token

在這裏插入圖片描述


諮詢請加微信:輕撩便可。 在這裏插入圖片描述session

原文出處:https://www.cnblogs.com/gdragon/p/11946441.html函數

相關文章
相關標籤/搜索