最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ThinkPHP5框架中使用JWT的方法示例

 更新時間:2020年06月03日 10:10:19   作者:huangyuxin_  
這篇文章主要介紹了ThinkPHP5框架中使用JWT的方法,結合實例形式詳細分析了ThinkPHP5中使用JWT的具體步驟與相關操作技巧,需要的朋友可以參考下

本文實例講述了ThinkPHP5框架中使用JWT的方法。分享給大家供大家參考,具體如下:

JWT下載地址:https://jwt.io

可以直接去github上下載,也可以使用composer

使用composer的話要確保你的電腦上安裝了composer,進入項目根目錄下載即了,自動會放在vendor目錄下

創(chuàng)建文件

我是放在common目錄下

使用教程

github都有的

貼源碼

JWTAuth.php

<?php
namespace app\common\Auth;
use \Lcobucci\JWT\Builder;
use \Lcobucci\JWT\Signer\Hmac\Sha256;
use \Lcobucci\JWT\Parser;
use \Lcobucci\JWT\ValidationData;
/**
 * 單例模式
 */
class JWTAuth
{
    private static $instance;
    /**
     * JWT TOKEN
     * @var [type]
     */
    private $token;
    /**
     * 頒發(fā)
     * @var string
     */
    private $iss = 'api.test.com';
    /**
     * 接收
     * @var string
     */
    private $aud = 'app.com';
 
    private $uid;
 
    private $secrect="#$%#$%*&^(*(*(";
 
    private $decodeToken;
 
    public static function getInstance() {
        if(is_null(self::$instance)) {
            self::$instance = new self();
        }
        return self::$instance;
    }
 
    private function __contruct(){
 
    }
 
    private function __clone(){
 
    }
 
    public function encode(){
        $time = time();
        $this->token = (new builder())->setHeader('alg','HS256')
            ->setIssuer($this->iss)
            ->setAudience($this->aud)
            ->setIssuedAt($time) //生效時間
            ->setExpiration($time + 20)//過期時間
            ->set('uid',$this->uid)
            ->sign(new Sha256(), $this->secrect)//加密算法
            ->getToken();
 
            return $this;
    }
 
    public function getToken(){
        return (string)$this->token;
    }
 
    public function setToken($token){
        $this->token = $token;
        return $this;
    }
    /**
     * 用戶信息uid
     * @param [type] $uid [description]
     */
    public function setUid($uid){
        $this->uid = $uid;
        return $this;
    }
 
    public function jsonDecode(){
 
        $token = $this->token;
        $this->decodeToken = (new Parser())->parse((string) $token); 
 
        // echo $this->decodeToken->getClaim('uid');
        return $this->decodeToken;
    }
    /**
     * 驗證令牌是否有效
     * @return [type] [description]
     */
    public function validate(){
 
        $data = new ValidationData();
        $data->setIssuer($this->iss);
        $data->setAudience($this->aud);
        return $this->jsonDecode()->validate($data);
 
    }
    /**
     * 簽名來驗證令牌在生成后是否未被修改
     * @return [type] [description]
     */
    public function verify(){
        $result = $this->jsonDecode()->verify(new Sha256(), $this->secrect);
        return $result;
    }
 
}

user.php 用來測試

<?php
namespace app\index\controller;
use app\common\Auth\JWTAuth;
 
class User{
 
    public function login(){
        
        $jwtAuth = JWTAuth::getInstance();
        $token = $jwtAuth->setUid(1)->encode()->getToken();
        echo $token;
        // var_dump(success_json_data(['token'=>$token]));
    }
 
    public function check_login(){
        $jwtAuth = JWTAuth::getInstance();
        $jwtAuth->setToken('eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkudGVzdC5jb20iLCJhdWQiOiJhcHAuY29tIiwiaWF0IjoxNTU2MDk1MDI5LCJleHAiOjE1NTYwOTUwNDksInVpZCI6MX0.oi4rLbQFNZUJsW4fVHWiOQxfEmomuvldAV-gFKl2V74');
 
        if($jwtAuth->validate() && $jwtAuth->verify()){
            echo '驗證成功';
        }else{
            echo '登錄過期';
        }
 
    }
}

最后

jwt本身的話是不帶token刷新方法,所以一旦token過期,客戶端就要重新登錄。

更多關于thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術總結》。

希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。

相關文章

  • PHP is_array() 檢測變量是否是數組的實現方法

    PHP is_array() 檢測變量是否是數組的實現方法

    下面小編就為大家?guī)硪黄狿HP is_array() 檢測變量是否是數組的實現方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考,一起跟隨小編過來看看吧
    2016-06-06
  • php獲得剛插入數據的id 的幾種方法總結

    php獲得剛插入數據的id 的幾種方法總結

    今天小編就為大家分享一篇php獲得剛插入數據的id 的幾種方法總結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • php實現的MySQL通用查詢程序

    php實現的MySQL通用查詢程序

    php實現的MySQL通用查詢程序...
    2007-03-03
  • laravel http 自定義公共驗證和響應的方法

    laravel http 自定義公共驗證和響應的方法

    今天小編就為大家分享一篇laravel http 自定義公共驗證和響應的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • PHP 計算至少是其他數字兩倍的最大數的實現代碼

    PHP 計算至少是其他數字兩倍的最大數的實現代碼

    這篇文章主要介紹了PHP 計算至少是其他數字兩倍的最大數,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • thinkphp5+layui實現的分頁樣式示例

    thinkphp5+layui實現的分頁樣式示例

    這篇文章主要介紹了thinkphp5+layui實現的分頁樣式,結合實例形式詳細分析了thinkPHP5框架結合layui實現的分頁功能相關的配置、查詢等操作技巧,需要的朋友可以參考下
    2019-10-10
  • thinkphp6如何使用中間件記錄行為日志

    thinkphp6如何使用中間件記錄行為日志

    這篇文章主要介紹了thinkphp6如何使用中間件記錄行為日志問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • php的declare命令及用法詳解

    php的declare命令及用法詳解

    declare是用來設定一段代碼的執(zhí)行指令,declare結構用于全局范圍,影響到其后的所有代碼,今天小編給大家普及php的declare命令及用法知識,感興趣的朋友一起看看吧
    2021-06-06
  • ThinkPHP數據操作方法總結

    ThinkPHP數據操作方法總結

    這篇文章主要介紹了ThinkPHP數據操作方法,以實例形式較為詳細的分析總結了ThinkPHP添加、更新、查詢及刪除數據的實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • Linux操作系統(tǒng)安裝LAMP環(huán)境

    Linux操作系統(tǒng)安裝LAMP環(huán)境

    本文給大家介紹的是在Linux操作系統(tǒng)安裝LAMP環(huán)境的方法和步奏,十分的詳細,有需要的小伙伴可以參考下。
    2015-06-06

最新評論

黑河市| 保山市| 金乡县| 阆中市| 宣城市| 兰坪| 高安市| 呼和浩特市| 军事| 卢湾区| 武城县| 高雄县| 罗江县| 迭部县| 图们市| 巴中市| 四平市| 宝应县| 溧水县| 漳浦县| 湖南省| 南郑县| 怀柔区| 郎溪县| 柳河县| 铜陵市| 高邮市| 河津市| 桦南县| 容城县| 加查县| 德令哈市| 丰宁| 昭苏县| 乐都县| 治多县| 洛扎县| 津市市| 苍南县| 洞头县| 工布江达县|