最簡單通用的權(quán)限校驗?zāi)P停?/p>
- 驗證是否合法航攒。
- 驗證是否有效烫映。
-
驗證 token 對應(yīng)的權(quán)限分预。
我們借助微信的權(quán)限驗證體系兢交,不需要自己傳遞賬號密碼,相應(yīng)的是小程序會為每一個登錄的用戶生成一個 code 碼笼痹,需要將 code 碼傳向 getToken 接口配喳。code 碼是去微信服務(wù)器換取用戶標(biāo)識的憑證。我們在 getToken 中接收到 code 碼之后就需要想服務(wù)器發(fā)送一個請求凳干,將 code 碼傳遞給微信服務(wù)器晴裹,獲取到 openid 和 session_key。openid 就是身份用戶的唯一標(biāo)識救赐。而 session_key 可以用來解密從服務(wù)器拿到的加密信息涧团。之所以要解密,是因為里面包含一個變量净响,叫做 unionid少欺,unionid 也是用戶的唯一標(biāo)識,但是與 openid 的區(qū)別是:不同微信小程序同一個賬戶的 openid 不同馋贤,而 unionid 相同赞别。unionid 經(jīng)常用于不同小程序之間的關(guān)聯(lián)。
我們接下來需要存儲 openid配乓,由于該標(biāo)識不具有時效期仿滔,安全性差,不能將 openid 直接返回到小程序犹芹。解決方法就是生成一個有時效期的 Token 令牌崎页,將令牌返回至客戶端。下一次用戶訪問時腰埂,需要攜帶令牌飒焦,間接地拿到 openid。
如果把 openid 和 Token 令牌全都記錄在數(shù)據(jù)庫里,每次訪問 API 都需要攜帶牺荠,每次查詢數(shù)據(jù)庫會增大數(shù)據(jù)庫的壓力翁巍,為了減少數(shù)據(jù)庫的壓力,我們可以用數(shù)據(jù)庫存儲 openid休雌,而 Token 令牌則緩存到本地灶壶,可以節(jié)約數(shù)據(jù)庫資源,也可以加快用戶的訪問速度杈曲。但是我們要注意驰凛,緩存的維護十分困難,需要合理的使用緩存担扑。
在有了之前的架構(gòu)之后恰响,訪問下單接口的 API 時就非常容易了。