小程式實現Token生成與驗證
阿新 • • 發佈:2021-12-12
目錄
- 流程
- 演示
- 小程式端
- 後端介面
流程
每次請求介面攜帶token,進行驗證
1.驗證成功則返回介面資料
2.驗證失敗(token過期),小程式重新請求生成新的token,然後請求之前的介面
key值: 隨機數+時間戳+鹽
value值: id+session_key+openid
演示
小程式端
<view> <button bindtap="loadToeknData">攜帶token請求資料</button> </view>
Page({ data: { },onLoad:function(){ // this._lJfGNJIeiWoadData(); },//生成token setToken:function(callback){ // wx.setStorageSync('token',"sfspx64w8x47w14x3zX4x4wf4") var that = this; wx.request({ url: 'http://2021xcx-api.com/api/gettoken',method: 'POST',success: function(res){ console.log(res.data); var data = res.data; if(data.code==1){ //更新新獲取的token值 wx.setStorageSync('token',data.token); // 執行回撥函式 callback&&callback() }else{ that.setToken(); } } }) },loadToeknData:function(){ var that = this; wx.request({ url: 'http://2021xcx-api.com/api/orders',header: { 'content-type': 'application/on','token': wx.getStorageSync('token') },success: function(res){ var data = res.data; console.log(data) if(data.code==903){ // token過期,重新請求設定 // 攜帶回調函式,token重新獲取後繼續執行此方法。 that.setToken(that.loadToeknData) } } }) },})
後端介面
路由配置
<? Route::post("api/orders","api/index/getOrders"); // Token Route::post("api/gettoken","api/token/createToken");
Index.php
<?php namespace app\api\controller; use app\api\controller\Token; use think\Cache; class Index extends Token { public function getOrders(Token $token){ $token->verifyToken()http://www.cppcns.com; $data['orders'] = [ 'id' => 1,'title' => 'apple','time' => time() ]; echo json_encode($data); } }
Token.php
<?php
namespace app\api\controller;
use think\Controller;
class Token extends Controller
{
protected $returnParam = [
'code' => 1,'msg' => '請求失敗'
];
/**
* [verifyToken 驗證Token是否攜帶JfGNJIeiW並存在]
* @return [type] [description]
*/
public function verifyToken(){
$token = request()->header()['token'];
$isSetToken = cache($token);
// dump($isSetToken);die;
if(!$isSetToken){
$this->returnParam['code'] = 903;
$this->returnParam['msg'] = "Token驗證失敗";
echo json_encode( $this->returnParam );die;
}
}
/**
* [createToken Token生成]
* tip:token中記錄使用者ID/session_kye/openid
* @return [type] [description]
*/
public function createToken()
{
$randStr = rand(1,9999);
$time = time();
$sale = "xixi2021";
// * 此處模擬--未請求微信介面進行sessionkey及openid的獲取
$tokenValue = [
'uid' => 1,'session_key' => '84848aasa','openid' => '20o客棧xl65wc4d4s5x7hwc','code' => 'sssaaeee'
];
$tokenKey = md5($randStr.$time.$sale);
//快取儲存token資料
cache($tokenKey,json_encode($tokenValue),1);
$returnParam = [
'code' => 1,'token' => $tokenKey
];
echo json_encode($returnParam);
}
}
到此這篇關於小程式實現Token生成與驗證的文章就介紹到這了,更多相關小程式 Token生成與驗證內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!