婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP JWT初識及其簡單示例

PHP JWT初識及其簡單示例

熱門標簽:電信外呼系統多少錢一個月 企業400電話辦理多少費用 宿州正規外呼系統軟件 代理打電話機器人 神龍斗士電話機器人 桂陽公司如何做地圖標注 萍鄉商鋪地圖標注 合肥企業外呼系統線路 太原400電話申請流程

一直沒有好好看過jwt,直到前兩天要做web驗證,朋友給我推薦了jwt。才發現jwt已經被大家廣泛的應用了。看來我有點out了。哈哈,趁著這個世界來好好看看這個。

JWT(JSON Web Token), 顧名思義就是可以在Web上傳輸的token,這種token是用JSON格式進行format的。它是一個開源標準(RFC 7519),定義了一個緊湊的自包含的方式在不同實體之間安全的用JSON格式傳輸信息。

由于現在很多項目都是前后端分離,restful api模式。所以傳統的session模式就沒有辦法滿足認證需求,這個時候jwt的作用就來了。可以說 restful api認證是jwt的一個很好的應用場景。

參數解釋

名稱 解釋
iss (issuer) issuer 請求實體,可以是發起請求的用戶的信息,也可是jwt的簽發者
sub (Subject) 設置主題,類似于發郵件時的主題
aud (audience) 接收jwt的一方
exp (expire) token過期時間
nbf (not before) 當前時間在nbf設定時間之前,該token無法使用
iat (issued at) token創建時間
jti (JWT ID) 對當前token設置唯一標示

下面是一個很小的demo

?php
require_once 'src/JWT.php';
header('Content-type:application/json');
//定義Key
const KEY = 'dasjdkashdwqe1213dsfsn;p';

$user = [
  'uid'=>'dadsa-12312-vsd1s1-fsds',
  'account'=>'daisc',
  'password'=>'123456'
];
$redis = redis();
$action = $_GET['action'];
switch ($action)
{
  case 'login':
    login();
    break;
  case 'info':
    info();
    break;

}
//登陸,寫入驗證token
function login()
{
  global $user;
  $account = $_GET['account'];
  $pwd = $_GET['password'];
  $res = [];
  if($account==$user['account']$pwd==$user['password'])
  {
    unset($user['password']);
    $time = time();
    $token = [
      'iss'=>'http://test.cc',//簽發者
      'iat'=>$time,
      'exp'=>$time+60,
      'data'=>$user
    ];
    $jwt = \Firebase\JWT\JWT::encode($token,KEY);
    $res['code'] = 200;
    $res['message'] = '登錄成功';
    $res['jwt'] = $jwt;

  }
  else
  {
    $res['message']= '用戶名或密碼錯誤';
    $res['code'] = 401;
  }
  exit(json_encode($res));
}

function info()
{
  $jwt = $_SERVER['HTTP_AUTHORIZATION'] ?? false;
  $res['code'] = 200;
  if($jwt)
  {
    $jwt = str_replace('Bearer ','',$jwt);
    if(empty($jwt))
    {
      $res['code'] = 401;
      $res['msg'] = 'You do not have permission to access.';
      exit(json_encode($res));
    }
    try{
      $token = (array) \Firebase\JWT\JWT::decode($jwt,KEY, ['HS256']);
      if($token['exp']time())
      {
        $res['code'] = 401;
        $res['msg'] = '登錄超時,請重新登錄';
      }
      $res['data']= $token['data'];
    }catch (\Exception $E)
    {
      $res['code'] = 401;
      $res['msg'] = '登錄超時,請重新登錄.';
    }
  }
  else
  {
    $res['code'] = 401;
    $res['msg'] = 'You do not have permission to access.';
  }
  exit(json_encode($res));
}

//連接redis
function redis()
{
  $redis = new Redis();
  $redis->connect('127.0.0.1');
  return $redis;
}

這個dmeo里面用jwt做了一個簡單的認證。 其中用到了一個php-jwt的加密包https://github.com/firebase/php-jwt

其中KEY為定義的私鑰也就是jwt里面的 sign部分,這個一定要保存好。
而header部分php-jwt包里面已經幫我們完成了,加密代碼如下

  public static function encode($payload, $key, $alg = 'HS256', $keyId = null, $head = null)
  {
    $header = array('typ' => 'JWT', 'alg' => $alg);
    if ($keyId !== null) {
      $header['kid'] = $keyId;
    }
    if ( isset($head)  is_array($head) ) {
      $header = array_merge($head, $header);
    }
    $segments = array();
    $segments[] = static::urlsafeB64Encode(static::jsonEncode($header));
    $segments[] = static::urlsafeB64Encode(static::jsonEncode($payload));
    $signing_input = implode('.', $segments);

    $signature = static::sign($signing_input, $key, $alg);
    $segments[] = static::urlsafeB64Encode($signature);

    return implode('.', $segments);
  }

可以看出默認的加密的方式是HS256。這也是說jwt安全的原因。現階段HS256加密還是很安全的。
這個包里面也支持證書加密。

加密解密的過程這個包已經幫我們完成了。所以我們只需要定義jwt中的 poyload部分就可以了。也就是demo里面的token部分。加密成功會得到一個加密的Jwt字符串,下次前端在請求api的時候需要攜帶這個jwt字符串作為認證。
在header頭里面增加Authorization。在服務端驗證的時候回通過取得這個值來驗證回話的有效。

下面是poyload的一些常用配置

 $token  = [
      #非必須。issuer 請求實體,可以是發起請求的用戶的信息,也可是jwt的簽發者。
      "iss"    => "http://example.org",
      #非必須。issued at。 token創建時間,unix時間戳格式
      "iat"    => $_SERVER['REQUEST_TIME'],
      #非必須。expire 指定token的生命周期。unix時間戳格式
      "exp"    => $_SERVER['REQUEST_TIME'] + 7200,
      #非必須。接收該JWT的一方。
      "aud"    => "http://example.com",
      #非必須。該JWT所面向的用戶
      "sub"    => "jrocket@example.com",
      # 非必須。not before。如果當前時間在nbf里的時間之前,則Token不被接受;一般都會留一些余地,比如幾分鐘。
      "nbf"    => 1357000000,
      # 非必須。JWT ID。針對當前token的唯一標識
      "jti"    => '222we',
      # 自定義字段
      "GivenName" => "Jonny",
      # 自定義字段
      "name"  => "Rocket",
      # 自定義字段
      "Email"   => "jrocket@example.com",
     
    ];

里面包含的配置可以自由配置,也可以自己添加一些其他的。這些都是網上大家常用的,可以說是一種約定吧。

注意事項

關于jwt的使用大概就是這些。上面的代碼在你使用的時候可能會出現兩個問題:

1、命名空間錯誤
解決:不使用命名空間的話,使用require引入文件。如果使用命名空間出現錯誤,請檢查命名空間的路徑。

2、生成的token是一個對象
解決:(string)$token 將token強轉成string

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • php 后端實現JWT認證方法示例
  • php實現JWT(json web token)鑒權實例詳解
  • php JWT在web端中的使用方法教程
  • PHP如何使用JWT做Api接口身份認證的實現
  • php實現JWT驗證的實例教程

標簽:辛集 太原 白銀 崇左 衡陽 鄂州 廊坊 綏化

巨人網絡通訊聲明:本文標題《PHP JWT初識及其簡單示例》,本文關鍵詞  PHP,JWT,初識,及其,簡單,示例,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP JWT初識及其簡單示例》相關的同類信息!
  • 本頁收集關于PHP JWT初識及其簡單示例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美日韩日日摸| 美女网站一区二区| 91视频你懂的| 久久99久久99| 亚洲高清在线精品| 亚洲视频在线一区观看| 精品国产免费一区二区三区四区| 一本久久a久久精品亚洲| 理论电影国产精品| 日韩电影免费在线看| 亚洲愉拍自拍另类高清精品| 日本大香伊一区二区三区| 春色校园综合激情亚洲| 国产成人综合亚洲91猫咪| 精品一区二区成人精品| 精品中文av资源站在线观看| 美女爽到高潮91| 日本女人一区二区三区| 婷婷国产在线综合| 亚州成人在线电影| 欧美一三区三区四区免费在线看 | 99精品欧美一区二区三区小说| 婷婷国产在线综合| 午夜影视日本亚洲欧洲精品| 亚洲一卡二卡三卡四卡无卡久久| 一区二区三区四区在线免费观看| 国产欧美一区二区三区网站| 欧美大片在线观看一区二区| 欧美精品一区二区三区很污很色的| 精品国免费一区二区三区| 久久亚洲精精品中文字幕早川悠里| 久久久久综合网| 中文字幕一区二区在线观看| 亚洲精品乱码久久久久| 丝袜美腿高跟呻吟高潮一区| 久久av资源网| 国产91精品免费| 欧美亚洲国产一区二区三区 | 制服丝袜在线91| 精品电影一区二区| 国产精品高潮呻吟| 亚洲一级二级在线| 久久综合综合久久综合| 国产成人在线色| 欧美亚洲综合一区| 精品粉嫩aⅴ一区二区三区四区 | 亚洲一区二区三区不卡国产欧美| 午夜亚洲国产au精品一区二区| 日韩精品电影在线观看| 国产999精品久久久久久绿帽| 91丨porny丨在线| 制服丝袜日韩国产| 中文字幕视频一区二区三区久| 亚洲午夜免费电影| 国产美女娇喘av呻吟久久| 欧美亚洲高清一区二区三区不卡| 日韩一区二区三区电影在线观看 | 日本伊人精品一区二区三区观看方式| 精品在线观看免费| 欧美在线你懂得| 久久久久久久综合日本| 亚洲chinese男男1069| 东方aⅴ免费观看久久av| 欧美日韩国产精选| 日韩一区在线免费观看| 久久99精品久久久久| 欧美亚洲愉拍一区二区| 国产精品天干天干在观线 | 国产成人免费高清| 欧美日本乱大交xxxxx| 18成人在线观看| 国产在线播放一区三区四| 欧美视频第二页| 亚洲欧美激情小说另类| 丰满白嫩尤物一区二区| 欧美va亚洲va香蕉在线| 丝瓜av网站精品一区二区| 91在线视频播放| 中文字幕制服丝袜一区二区三区| 国产乱人伦偷精品视频不卡| 日韩一级黄色大片| 日韩电影免费在线看| 欧美日韩中字一区| 亚洲高清不卡在线| 欧美伊人久久久久久久久影院| 中文字幕二三区不卡| 福利一区二区在线| 中文字幕第一区二区| 国产99精品在线观看| 中文字幕高清一区| 91在线播放网址| 一级女性全黄久久生活片免费| 91麻豆精品一区二区三区| 亚洲精品自拍动漫在线| 色综合天天综合给合国产| 亚洲男同性恋视频| 欧美日韩在线播| 日韩美一区二区三区| 欧美精品一区二区三区蜜臀| 激情另类小说区图片区视频区| 欧美精品一区二| 国产福利一区在线观看| 亚洲国产精品二十页| a级高清视频欧美日韩| 欧美自拍偷拍午夜视频| 亚洲1区2区3区4区| 欧美成人在线直播| 国产精品综合视频| 中文字幕一区在线| 欧美羞羞免费网站| 日韩av一级片| 久久九九全国免费| 成人av在线影院| 一区二区三区在线视频免费| 欧美老年两性高潮| 国产精品一区二区x88av| 国产精品国产三级国产aⅴ入口| 色成人在线视频| 视频在线在亚洲| 欧美电视剧在线看免费| 99久久99久久精品国产片果冻 | 久久精品国产第一区二区三区| 欧美一区二区性放荡片| 国产精品一区二区男女羞羞无遮挡 | 国产在线看一区| 国产精品成人免费| 欧美日韩成人综合天天影院 | 精品污污网站免费看| 九一九一国产精品| 国产调教视频一区| 欧美性生活一区| 极品少妇一区二区三区精品视频 | 国产麻豆午夜三级精品| 中文av一区特黄| 欧美日韩在线直播| 国产高清在线精品| 亚洲综合色噜噜狠狠| 久久精品视频在线免费观看| 成人午夜视频在线| 午夜成人免费视频| 国产欧美精品一区二区色综合| 欧美亚一区二区| 国产精品18久久久久久vr| 亚洲一区二区三区中文字幕在线| 精品免费国产二区三区| 欧美色老头old∨ideo| 国产剧情一区二区| 天堂一区二区在线| 亚洲色图制服诱惑| 国产农村妇女毛片精品久久麻豆 | 久久只精品国产| 日本高清成人免费播放| 国内外成人在线| 亚洲成人av福利| 最新国产の精品合集bt伙计| xvideos.蜜桃一区二区| 欧美日韩在线不卡| 91亚洲精华国产精华精华液| 激情综合色播激情啊| 夜夜嗨av一区二区三区中文字幕| 日本一区二区三区四区| 91精品国产综合久久婷婷香蕉| 色综合天天综合狠狠| 国产黄人亚洲片| 久久99国产精品久久| 午夜精品福利一区二区三区av| 亚洲精品五月天| 国产午夜精品久久久久久免费视| 欧美一区二区三区婷婷月色| 91视频一区二区| 91在线看国产| 99视频精品全部免费在线| 国产91色综合久久免费分享| 黑人精品欧美一区二区蜜桃| 日本va欧美va欧美va精品| 亚洲午夜视频在线| 亚洲mv在线观看| 日本不卡1234视频| 婷婷开心激情综合| 亚洲精品免费电影| 日韩视频免费观看高清完整版在线观看 | 久久99精品国产麻豆不卡| 日韩电影在线一区二区三区| 一卡二卡欧美日韩| 亚洲女同一区二区| 亚洲欧美日韩中文播放| 亚洲丝袜自拍清纯另类| 亚洲欧美激情在线| 亚洲综合在线视频| 天天免费综合色| 久久精品国产99国产精品| 国产精品久久毛片av大全日韩| 亚洲欧洲日产国码二区| 亚洲免费观看高清完整版在线 | 91精品欧美一区二区三区综合在| 欧美三级电影精品| 欧美一区二区三区四区高清| 日韩精品一区二区三区视频播放| 国产色产综合色产在线视频 | 中文字幕中文字幕一区二区|