BIG
- JWT 라이브러리 설치
# PHP에서 JWT를 사용하려면 먼저 JWT 라이브러리를 설치해야 합니다.
# 여러 가지 JWT 라이브러리가 있지만, 이번 포스팅에서는 firebase/php-jwt 라이브러리를 사용하겠습니다.
# composer를 사용하여 firebase/php-jwt 라이브러리를 설치할 수 있습니다.
shell>composer require firebase/php-jwt
- JWT 생성하기
<?php
use Firebase\JWT\JWT;
$key = "secret_key";
$payload = array(
"user_id" => 1,
"username" => "MESSI",
"email" => "MESSI@example.com"
);
$jwt = JWT::encode($payload, $key);
echo $jwt;
// firebase/php-jwt 라이브러리를 사용하여 JWT를 생성합니다.
// $key 변수는 JWT의 비밀 키입니다.
// $payload 변수는 JWT에 포함될 데이터입니다.
// JWT::encode() 함수를 사용하여 JWT를 생성합니다.
?>
- JWT 검증하기
<?php
use Firebase\JWT\JWT;
$key = "secret_key";
$jwt = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImpvaG5fZG9
lIiwiZW1haWwiOiJqb2huX2RvZUBleGFtcGxlLmNvbSJ9
.z2QzKvE5liYJ8e4zfCXH7Lx4J6Uz7V8BnSILvy7NTsg";
try {
$decoded = JWT::decode($jwt, $key, array('HS256'));
print_r($decoded);
} catch (Exception $e) {
echo 'Token is invalid: ' . $e->getMessage();
}// end try
// firebase/php-jwt 라이브러리를 사용하여 JWT를 검증합니다.
// $key 변수는 JWT의 비밀 키입니다.
// $jwt 변수는 검증할 JWT입니다.
// JWT::decode() 함수를 사용하여 JWT를 검증합니다.
// 검증에 실패하면 Exception이 발생합니다.
?>
- JWT 유효성 검사하기
<?php
use Firebase\JWT\JWT;
$key = "secret_key";
$jwt = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImpvaG5fZG9
lIiwiZW1haWwiOiJqb2huX2RvZUBleGFtcGxlLmNvbSJ9
.z2QzKvE5liYJ8e4zfCXH7Lx4J6Uz7V8BnSILvy7NTsg";
try {
$decoded = JWT::decode($jwt, $key, array('HS256'));
$user_id = $decoded->user_id;
$username = $decoded->username;
$email = $decoded->email;
// 유효기간 만료 체크
$now = time();
if ($decoded->exp <= $now) {
echo 'Token is expired.';
}
// 유효한지 확인
$isValidUser = true; // 유효성 검사 코드로 대체
if (!$isValidUser) {
echo 'Invalid user.';
}
// User 데이터 확인
echo 'User ID: ' . $user_id . '<br />';
echo 'Username: ' . $username . '<br />';
echo 'Email: ' . $email . '<br />';
} catch (Exception $e) {
echo 'Token is invalid: ' . $e->getMessage();
}
// 위에서 생성된 JWT를 검증하고, 유효성을 검사합니다.
// 먼저 JWT의 내용을 해독하여 $decoded 변수에 저장합니다.
// 그 후 $decoded 변수에서 user_id, username, email을 추출하여 사용합니다.
// 그 다음, JWT가 만료되었는지 검사합니다.
// JWT의 만료시간은 $decoded->exp 변수에 저장되어 있습니다.
// 현재 시간을 $now 변수에 저장하여 비교합니다.
// JWT가 만료되었으면 Token is expired. 메시지를 출력합니다.
// 마지막으로, 유효한 사용자인지 검사합니다.
// 이 검사는 실제로는 데이터베이스에서 사용자를 검색하고 검증하는 등의 작업이 필요합니다.
// 검증 결과에 따라 Invalid user. 메시지를 출력할 수 있습니다.
?>
LIST
'!!...PHP > !!...HowTo' 카테고리의 다른 글
[How To] AWS S3 File Upload Using PHP & composer (0) | 2023.11.16 |
---|---|
[How To] Using JWT( JSON WEB TOKEN ) with PHP Type_01 (0) | 2023.09.28 |
[How To] composer 설치 & phpspreadsheet 설치 (0) | 2023.08.22 |
[How To] Apache PHP MariaDB 환경에서 WAS_02...? (0) | 2023.05.22 |
[How To] PHP 메모리 부족 메시지( Fatal error: Allowed memory size of ~ ) 출력상황 처리 방법 (0) | 2022.10.05 |