JWT (JSON Web Token)는 네트워크 응용 프로그램간에 안전한 정보를 전달하는 데 사용되는 암호화 토큰입니다. 클라이언트와 서버 간의 정보를 JSON 객체의 형태로 안전하게 전송합니다.
JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다.
헤더 : 토큰의 유형 및 암호화 알고리즘을 선언합니다. 예:
{
"alg": "HS256",
"typ": "JWT"
}
페이로드 : 일부 표준 선언 및 사용자 정의 선언이 포함되어 있습니다. 예:
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
서명 : 키로 헤더와 페이로드의 Base64 인코딩에 서명하여 생성하십시오.
ThinkPhp6에서 JWT Verification을 사용하려면 먼저 JWT Extension을 설치해야합니다. 프로젝트 디렉토리의 Composer.json 파일에서 다음 종속성을 추가하십시오.
"require": {
"firebase/php-jwt": "5.0.0"
}
그런 다음 작곡가 설치 명령을 실행하여 JWT 확장자를 설치하십시오.
성공적으로 로그인 한 후 토큰을 생성하여 클라이언트로 반환 할 수 있습니다. 샘플 코드 :
use think\jwt\JWT;
public function login() {
// 로그인 로직
$payload = [
'sub' => $user->id,
'name' => $user->username,
'iat' => time()
];
$token = JWT::encode($payload, $key);
return json(['token' => $token]);
}
사용자의 신원을 확인 해야하는 경우 JWT를 사용하여 토큰의 유효성을 확인할 수 있습니다. 샘플 코드 :
use think\jwt\JWT;
public function getUser(Request $request) {
$token = $request->header('Authorization');
try {
$payload = JWT::decode($token, $key, ['HS256']);
$user = User::get($payload->sub); // 데이터베이스에서 사용자 정보를 얻습니다
return json($user);
} catch (Exception $e) {
return json(['error' => 'Token is invalid']);
}
}
JWT는 편리하고 안전한 인증 방법이며 ThinkPhP6에서 JWT 인증을 구현하는 것도 매우 간단합니다. 토큰을 생성하고 검증하는 과정을 통해 사용자의 신원을 효과적으로 보호 할 수 있습니다. 동시에, 비밀 키를 보호하고 토큰의 만료 시간을 합리적으로 설정하면 시스템 보안이 더욱 향상 될 수 있습니다.