欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

小程序?qū)崿F(xiàn)Token生成與驗(yàn)證

 更新時(shí)間:2021年12月10日 09:53:59   作者:紅塵煉煉心  
本文主要介紹了小程序?qū)崿F(xiàn)Token生成與驗(yàn)證,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

流程

每次請(qǐng)求接口攜帶token,進(jìn)行驗(yàn)證
1.驗(yàn)證成功則返回接口數(shù)據(jù)
2.驗(yàn)證失敗(token過(guò)期),小程序重新請(qǐng)求生成新的token,然后請(qǐng)求之前的接口

key值: 隨機(jī)數(shù)+時(shí)間戳+鹽
value值: id+session_key+openid

演示

小程序端

<view>
  <button bindtap="loadToeknData">攜帶token請(qǐng)求數(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過(guò)期,重新請(qǐng)求設(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' => '請(qǐng)求失敗'
    ];
 
    /**
     * [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";
 
        // * 此處模擬--未請(qǐng)求微信接口進(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • TypeScript 類(lèi)型編程之索引類(lèi)型遞歸去掉可選修飾

    TypeScript 類(lèi)型編程之索引類(lèi)型遞歸去掉可選修飾

    這篇文章主要介紹了TypeScript 類(lèi)型編程之索引類(lèi)型遞歸去掉可選修飾,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • 教你5分鐘學(xué)會(huì)用requirejs(必看篇)

    教你5分鐘學(xué)會(huì)用requirejs(必看篇)

    下面小編就為大家?guī)?lái)一篇教你5分鐘學(xué)會(huì)用requirejs(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • js中forEach的用法之forEach與for之間的區(qū)別

    js中forEach的用法之forEach與for之間的區(qū)別

    這篇文章主要介紹了js中forEach的用法之forEach與for之間的區(qū)別,forEach() 調(diào)用數(shù)組的每個(gè)元素,并將元素傳遞給回調(diào)函數(shù),下面更多詳細(xì)介紹需要的小伙伴可以參考一下

    2022-03-03
  • js實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形導(dǎo)航列表效果代碼

    js實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形導(dǎo)航列表效果代碼

    這篇文章主要介紹了js實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形導(dǎo)航列表效果代碼,通過(guò)一個(gè)封裝的JS類(lèi)實(shí)現(xiàn)無(wú)限樹(shù)形導(dǎo)航的效果,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-09-09
  • js中的深淺拷貝問(wèn)題簡(jiǎn)析

    js中的深淺拷貝問(wèn)題簡(jiǎn)析

    這篇文章主要給大家介紹了關(guān)于js中的深淺拷貝問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • JavaScript網(wǎng)頁(yè)定位詳解

    JavaScript網(wǎng)頁(yè)定位詳解

    本篇文章主要是對(duì)JavaScript網(wǎng)頁(yè)定位進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • JS?ES5創(chuàng)建常量詳解

    JS?ES5創(chuàng)建常量詳解

    這篇文章主要介紹了JS?ES5創(chuàng)建常量詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-07-07
  • 頁(yè)面下沉抖動(dòng)效果-網(wǎng)站HTTP連接沒(méi)有效果-PC上有效果

    頁(yè)面下沉抖動(dòng)效果-網(wǎng)站HTTP連接沒(méi)有效果-PC上有效果

    頁(yè)面下沉抖動(dòng)效果實(shí)現(xiàn)代碼,代碼少,功能還可以
    2008-05-05
  • JS中var let聲明范圍區(qū)別詳解

    JS中var let聲明范圍區(qū)別詳解

    這篇文章主要為大家介紹了JS中var let聲明范圍區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • JavaScript禁止用戶多次提交的兩種方法

    JavaScript禁止用戶多次提交的兩種方法

    這篇文章主要介紹了JavaScript禁止用戶多次提交的兩種方法的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07

最新評(píng)論