国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

?? JWT 認(rèn)證插件

v1.11.3 版本
2025-04-10 版本更新時間
31953 安裝
60 star

簡介

License Latest Stable Version Total Downloads Monthly Downloads Daily Downloads PHP Version Require

Json web token 是為了在網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開放標(biāo)準(zhǔn)((RFC 7519)。該token被設(shè)計為緊湊且安全的,特別適用于分布式站點的單點登錄(SSO)場景。

安裝

composer require tinywan/jwt

生成令牌

$user = [
    'id'  => 2022, // 這里必須是一個全局抽象唯一id
    'name'  => 'Tinywan',
    'email' => 'Tinywan@163.com'
];
$token = Tinywan\Jwt\JwtToken::generateToken($user);
var_dump(json_encode($token));

輸出(json格式)

{
    "token_type": "Bearer",
    "expires_in": 36000,
    "access_token": "eyJ0eXAiOiJAUR-Gqtnk9LUPO8IDrLK7tjCwQZ7CI...",
    "refresh_token": "eyJ0eXAiOiJIEGkKprvcccccQvsTJaOyNy8yweZc..."
}

參數(shù)描述

參數(shù) 類型 描述 示例值
token_type string Token 類型 Bearer
expires_in int 憑證有效時間,單位:秒 36000
access_token string 訪問憑證 XXXXXXXXXXXXXXXXXXXX
refresh_token string 刷新憑證(訪問憑證過期使用 ) XXXXXXXXXXXXXXXXXXXX

已支持方法

1、獲取當(dāng)前uid

Tinywan\Jwt\JwtToken::getCurrentId();

2、獲取所有擴(kuò)展字段

Tinywan\Jwt\JwtToken::getExtend();

3、獲取自定義字段

Tinywan\Jwt\JwtToken::getExtendVal('email');

4、刷新令牌(通過刷新令牌獲取訪問令牌)

Tinywan\Jwt\JwtToken::refreshToken();

5、獲取令牌有效期剩余時長(單位:秒)

Tinywan\Jwt\JwtToken::getTokenExp();

6、單設(shè)備登錄。默認(rèn)是關(guān)閉,開啟請修改配置文件config/plugin/tinywan/jwt

'is_single_device' => true,

7、獲取當(dāng)前用戶信息(模型)。需要插件大于版本 >=1.2.4

Tinywan\Jwt\JwtToken::getUser();

注意:該配置項目'user_model'為一個匿名函數(shù),匿名函數(shù)參數(shù)$uid為當(dāng)前登錄用戶id,默認(rèn)返回空數(shù)組,可以根據(jù)自己項目ORM定制化自己的返回模型

ThinkORM 配置

'user_model' => function($uid) {
    // 返回一個數(shù)組
    return \think\facade\Db::table('resty_user')
        ->field('id,username,create_time')
        ->where('id',$uid)
        ->find();
}

LaravelORM 配置

'user_model' => function($uid) {
    // 返回一個對象
    return \support\Db::table('resty_user')
        ->where('id', $uid)
        ->select('id','email','mobile','create_time')
        ->first();
}

8、令牌清理

Tinywan\Jwt\JwtToken::clear();

注:只有配置項 is_single_devicetrue 才會生效

9、自定義終端client。需要插件大于版本 >=v1.8.2

// 生成WEB令牌
$user = [
    'id'  => 2022,
    'name'  => 'Tinywan',
    'client' => JwtToken::TOKEN_CLIENT_WEB
];
$token = JwtToken::generateToken($user);

// 生成移動端令牌
$user = [
    'id'  => 2022,
    'name'  => 'Tinywan',
    'client' => JwtToken::TOKEN_CLIENT_MOBILE
];
$token = JwtToken::generateToken($user);

默認(rèn)是WEB

  1. 自定義訪問令牌和刷新令牌過期時間
$extend = [
    'id'  => 2024,
    'name'  => 'Tinywan',
    'access_exp'  => 600,  // 10 分鐘
    'refresh_exp'  => 7200,  // 2 小時
];
$token = Tinywan\Jwt\JwtToken::generateToken($extend);

11、支持GET方式獲取令牌。需要插件大于版本 >=1.9.0

/** 是否支持 get 請求獲取令牌 */
'is_support_get_token' => true,

/** GET 請求獲取令牌請求key */
'is_support_get_token_key' => 'authorization',

12、自定義訪問令牌和刷新令牌過期時間

$extend = [
    'id'  => 2024,
    'access_exp'  => 7200,  // 2 小時
];
$token = Tinywan\Jwt\JwtToken::generateToken($extend);

13、令牌過期錯誤碼

  • 訪問令牌
    • 身份驗證令牌無效:401011
    • 身份驗證令牌尚未生效:401012
    • 身份驗證會話已過期,請重新登錄?。?code>401013
    • 獲取的擴(kuò)展字段不存在:401014
    • 訪問令牌未知錯誤:401015
  • 刷新令牌
    • 刷新令牌無效:401021
    • 刷新令牌尚未生效:401022
    • 刷新令牌會話已過期,請再次登錄?。?code>401023
    • 刷新令牌獲取的擴(kuò)展字段不存在:401024
    • 刷新令牌未知錯誤:401025

簽名算法

JWT 最常見的幾種簽名算法(JWA):HS256(HMAC-SHA256) 、RS256(RSA-SHA256) 還有 ES256(ECDSA-SHA256)

JWT 算法列表如下

+--------------+-------------------------------+--------------------+
   | "alg" Param  | Digital Signature or MAC      | Implementation     |
   | Value        | Algorithm                     | Requirements       |
   +--------------+-------------------------------+--------------------+
   | HS256        | HMAC using SHA-256            | Required           |
   | HS384        | HMAC using SHA-384            | Optional           |
   | HS512        | HMAC using SHA-512            | Optional           |
   | RS256        | RSASSA-PKCS1-v1_5 using       | Recommended        |
   |              | SHA-256                       |                    |
   | RS384        | RSASSA-PKCS1-v1_5 using       | Optional           |
   |              | SHA-384                       |                    |
   | RS512        | RSASSA-PKCS1-v1_5 using       | Optional           |
   |              | SHA-512                       |                    |
   | ES256        | ECDSA using P-256 and SHA-256 | Recommended+       |
   | ES384        | ECDSA using P-384 and SHA-384 | Optional           |
   | ES512        | ECDSA using P-521 and SHA-512 | Optional           |
   | PS256        | RSASSA-PSS using SHA-256 and  | Optional           |
   |              | MGF1 with SHA-256             |                    |
   | PS384        | RSASSA-PSS using SHA-384 and  | Optional           |
   |              | MGF1 with SHA-384             |                    |
   | PS512        | RSASSA-PSS using SHA-512 and  | Optional           |
   |              | MGF1 with SHA-512             |                    |
   | none         | No digital signature or MAC   | Optional           |
   |              | performed                     |                    |
   +--------------+-------------------------------+--------------------+

   The use of "+" in the Implementation Requirements column indicates
   that the requirement strength is likely to be increased in a future
   version of the specification.

可以看到被標(biāo)記為 Recommended 的只有 RS256 和 ES256。

對稱加密算法

插件安裝默認(rèn)使用HS256對稱加密算法。

HS256 使用同一個「secret_key」進(jìn)行簽名與驗證。一旦 secret_key泄漏,就毫無安全性可言了。因此 HS256 只適合集中式認(rèn)證,簽名和驗證都必須由可信方進(jìn)行。

非對稱加密算法

RS256 系列是使用 RSA 私鑰進(jìn)行簽名,使用 RSA 公鑰進(jìn)行驗證。

公鑰即使泄漏也毫無影響,只要確保私鑰安全就行。RS256 可以將驗證委托給其他應(yīng)用,只要將公鑰給他們就行。

以下為RS系列算法生成命令,僅供參考

RS512

ssh-keygen -t rsa -b 4096 -E SHA512 -m PEM -P "" -f RS512.key
openssl rsa -in RS512.key -pubout -outform PEM -out RS512.key.pub

RS512

ssh-keygen -t rsa -b 4096 -E SHA354 -m PEM -P "" -f RS384.key
openssl rsa -in RS384.key -pubout -outform PEM -out RS384.key.pub

RS256

ssh-keygen -t rsa -b 4096 -E SHA256 -m PEM -P "" -f RS256.key
openssl rsa -in RS256.key -pubout -outform PEM -out RS256.key.pub

具體算法配置請參考 config/plugin/tinywan/jwt/app.php 配置文件

?? 視頻地址

不懂的同學(xué)可以了解一下視頻,會有詳細(xì)的說明哦

?? 下載

https://packagist.org/packages/tinywan/jwt/stats#major/all

Package Installs

截圖

PHP Version

截圖

贊助商