jwt的應用生成token,redis做儲存

2022-04-29 13:36:09 字數 2459 閱讀 2827

jwt就是乙個字串,經過加密處理與校驗處理的字串,由三個部分組成。基於token的身份驗證可以替代傳統的cookie+session身份驗證方法。三個部分分別如下:

header.payload.signature

header部分組成

header 格式為:

這就是乙個json串,兩個欄位都是必須的,alg字段指定了生成signature的演算法,預設值為hs256,可以自己指定其他的加密演算法,如rsa.經過base64encode就可以得到header.

payload 部分組成

playload 基本組成部分:

簡單點:

$payload=[

'iss' => $issuer, //簽發者

'iat' => $_server['request_time'], //什麼時候簽發的

'exp' => $_server['request_time'] + 7200 //過期時間

'uid'=>1111

];

複雜點:官方說法,三個部分組成(reserved claimspublic claims,private claims)

$token   = [

#非必須。issuer 請求實體,可以是發起請求的使用者的資訊,也可是jwt的簽發者。

"iss" => "",

#非必須。issued at。 token建立時間,unix時間戳格式

"iat" => $_server['request_time'],

#非必須。expire 指定token的生命週期。unix時間戳格式

"exp" => $_server['request_time'] + 7200,

#非必須。接收該jwt的一方。

"aud" => "",

#非必須。該jwt所面向的使用者

"sub" => "[email protected]",

# 非必須。not before。如果當前時間在nbf裡的時間之前,則token不被接受;一般都會留一些餘地,比如幾分鐘。

"nbf" => 1357000000,

# 非必須。jwt id。針對當前token的唯一標識

"jti" => '222we',

# 自定義字段

"givenname" => "jonny",

# 自定義字段

"name" => "rocket",

# 自定義字段

"email" => "[email protected]",

];

payload也是乙個json資料,是表明使用者身份的資料,可以自己自定義字段,很靈活。你也可以簡單的使用,比如簡單的方式。經過json_encodebase64_encode就可得到payloadsignature組成部分

headerpayload使用header中指定的加密演算法加密,當然加密過程還需要自定秘鑰,自己選乙個字串就可以了。

官網例項:

hmacsha256(

base64urlencode(header) + "." +

base64urlencode(payload),

secret)

自己使用:

<?php 

public static function encode(array $payload, string $key, string $alg = 'sha256')

public static function signature(string $input, string $key, string $alg)

這三個部分使用.連線起來就是高大上的jwt,然後就可以使用了.

官方使用流程說明:

翻譯一下:

關於tp5應用jwt

生成的token用redis儲存保證其過期時間

jwt 生成token方法

author marte date 2019 04 23 10 37 03 last modified by marte last modified time 2019 04 23 10 58 23 單例 一次請求中所有出現使用jwt的地方都是乙個使用者 class jwtelse 驗證token是...

JWT 生成及驗證

1 composer安裝 composer require lcobucci jwt 3.3 2 例項化類 namespace tools jwt use 到你自己安裝的目錄,每個人的可能不同 use lcobucci jwt builder use lcobucci jwt parser use ...

JWT在Django中的應用

json web token jwt 是為了在網路應用環境間傳遞宣告而執行的一種基於json的開放標準 rfc 7519 該token被設計為緊湊且安全的,特別適用於分布式站點的單點登入 sso 場景。jwt的宣告一般被用來在身份提供者和服務提供者間傳遞被認證的使用者身份資訊,以便於從資源伺服器獲取...