欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

jwt授權php

張明哲1年前8瀏覽0評論

JWT授權是目前流行的一種授權方式,它可以為前端和后端提供安全可靠的數(shù)據(jù)傳輸途徑,尤其是在調(diào)用API時更是必不可少。授權Token通過JWT規(guī)范生成,可以為每個請求提供授權標識。當然要使用此種方式,需要在php中編寫代碼來實現(xiàn)該功能。

在使用JWT授權之前,需要下載jwt-php庫,可以通過Composer下載,也可以通過GitHub下載安裝。下面是使用composer安裝:

composer require firebase/php-jwt

生成授權Token的過程中,需要使用服務器端的密鑰進行簽名。具體實現(xiàn)過程如下:

use \Firebase\JWT\JWT;
$key = "example_key";
$payload = array(
"iss" =>"http://example.org",
"aud" =>"http://example.com",
"iat" =>1356999524,
"nbf" =>1357000000
);
$jwt = JWT::encode($payload, $key);

上述代碼中,第一個參數(shù)是需要編碼的payload數(shù)據(jù),第二個參數(shù)是密鑰。

對于JWT授權而言,以下是常用設置:

默認情況下,jwt-php會用base64對payload進行編碼,但是也可以使用json數(shù)據(jù)格式進行編碼,具體如下:

use \Firebase\JWT\JWT;
$key = "example_key";
$payload = array(
'sub' =>123,
'name' =>'John Doe',
'iat' =>1516239022,
'exp' =>1516239422,
'data' =>[
'userId' =>322,
'email' =>'test@example.com'
]
);
$jwt = JWT::encode($payload, $key, 'HS256', null, ['json']);

JWT授權也支持自定義header,如下:

use \Firebase\JWT\JWT;
$header = [
'typ' =>'JWT',
'alg' =>'HS256'
];
$key = "example_key";
$payload = array(
'sub' =>123,
'name' =>'John Doe',
'iat' =>1516239022,
'exp' =>1516239422,
'data' =>[
'userId' =>322,
'email' =>'test@example.com'
]
);
$jwt = JWT::encode($payload, $key, 'HS256', null, $header);

JWT授權也支持一些選項,主要包括:簽名算法、過期時間、壓縮、生成時間等。以下是常用選項設置代碼:

use \Firebase\JWT\JWT;
$now = time();
$exp = $now + 60 * 60 * 24;//有效期為24小時
$header = [
'typ' =>'JWT',
'alg' =>'HS256'
];
$key = "example_key";
$payload = array(
'sub' =>123,
'name' =>'John Doe',
'iat' =>$now,
'exp' =>$exp,
'data' =>[
'userId' =>322,
'email' =>'test@example.com'
]
);
$jwt = JWT::encode($payload, $key, 'HS256', null, $header);

除以上方法外,jwt-php 還提供了驗證token的方法,如下:

use \Firebase\JWT\JWT;
$key = "example_key";
$jwt = 'eyJ0eXAiOiAiSldUIiwgImFsZyI6ICJIUzI1NiIg.eyJzdWIiOiAxMjMsICJuYW1lIjogIkpvaG4gRG9lIiwgImlhdCI6IDE1MzY2MjU2MzcsICJleHAiOiAxNTM2NjI1NjQ3LCAiZGF0YSI6IHtcbnVzZXJJZDogMzIyLFxuZW1haWw6ICJ0ZXN0QGV4YW1wbGUuY29tXG59IH0=.RaYIL2EZCYP4uBdt15lQZm3BGv1LAiqLSYN29i7kBEc=';
$json = json_encode(JWT::decode($jwt, $key, array('HS256')));

JWT授權是一個非常好的解決方案,它能夠?qū)崿F(xiàn)前后端之間的數(shù)據(jù)傳輸,也能提供有效的授權認證。PHP語言支持JWT授權,對于需要使用授權認證的應用程序而言,JWT授權是一種靠譜的授權認證方式。