小程序?qū)崿F(xiàn)Token生成與驗(yàn)證
流程
每次請求接口攜帶token,進(jìn)行驗(yàn)證
1.驗(yàn)證成功則返回接口數(shù)據(jù)
2.驗(yàn)證失敗(token過期),小程序重新請求生成新的token,然后請求之前的接口
key值: 隨機(jī)數(shù)+時(shí)間戳+鹽
value值: id+session_key+openid
演示
小程序端
<view> <button bindtap="loadToeknData">攜帶token請求數(shù)據(jù)</button> </view>
Page({
data: {
},
onLoad:function(){
// this._loadData();
},
//生成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);
// 執(zhí)行回調(diào)函數(shù)
callback&&callback()
}else{
that.setToken();
}
}
})
},
loadToeknData:function(){
var that = this;
wx.request({
url: 'http://2021xcx-api.com/api/orders',
method: 'POST',
header: {
'content-type': 'application/json',
'token': wx.getStorageSync('token')
},
success: function(res){
var data = res.data;
console.log(data)
if(data.code==903){
// token過期,重新請求設(shè)置
// 攜帶回調(diào)函數(shù),token重新獲取后繼續(xù)執(zhí)行此方法。
that.setToken(that.loadToeknData)
}
}
})
},
})

??
后端接口
路由配置
<?php
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();
$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 驗(yàn)證Token是否攜帶并存在]
* @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驗(yàn)證失敗";
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";
// * 此處模擬--未請求微信接口進(jìn)行sessionkey及openid的獲取
$tokenValue = [
'uid' => 1,
'session_key' => '84848aasa',
'openid' => '20oxl65wc4d4s5x7hwc',
'code' => 'sssaaeee'
];
$tokenKey = md5($randStr.$time.$sale);
//緩存存儲(chǔ)token數(shù)據(jù)
cache($tokenKey, json_encode($tokenValue), 1);
$returnParam = [
'code' => 1,
'token' => $tokenKey
];
echo json_encode($returnParam);
}
}

到此這篇關(guān)于小程序?qū)崿F(xiàn)Token生成與驗(yàn)證的文章就介紹到這了,更多相關(guān)小程序 Token生成與驗(yàn)證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java通過WebSocket實(shí)現(xiàn)異步導(dǎo)出解決思路
這篇文章主要介紹了通過WebSocket實(shí)現(xiàn)異步導(dǎo)出,本篇文章記錄大批量數(shù)據(jù)導(dǎo)出時(shí)間過長,導(dǎo)致接口請求超時(shí)問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01
layui table 列寬百分比顯示的實(shí)現(xiàn)方法
今天小編就為大家分享一篇layui table 列寬百分比顯示的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
Bootstrap響應(yīng)式側(cè)邊欄改進(jìn)版
這篇文章主要為大家詳細(xì)介紹了Bootstrap響應(yīng)式側(cè)邊欄改進(jìn)版,結(jié)合導(dǎo)航條和下拉菜單進(jìn)行改進(jìn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09

