현재 위치: > 최신 기사 목록> ThinkPhp6에서 JWT 인증 구현에 대한 완전한 안내서

ThinkPhp6에서 JWT 인증 구현에 대한 완전한 안내서

gitbox 2025-07-14

JWT는 무엇입니까?

JWT (JSON Web Token)는 네트워크 응용 프로그램간에 안전한 정보를 전달하는 데 사용되는 암호화 토큰입니다. 클라이언트와 서버 간의 정보를 JSON 객체의 형태로 안전하게 전송합니다.

JWT의 작동 방식

JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다.

헤더 : 토큰의 유형 및 암호화 알고리즘을 선언합니다. 예:

 {
  "alg": "HS256",
  "typ": "JWT"
}

페이로드 : 일부 표준 선언 및 사용자 정의 선언이 포함되어 있습니다. 예:

 {
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}

서명 : 키로 헤더와 페이로드의 Base64 인코딩에 서명하여 생성하십시오.

ThinkPhp6에서 JWT 확인 단계

JWT 확장자를 설치하십시오

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 인증을 구현하는 것도 매우 간단합니다. 토큰을 생성하고 검증하는 과정을 통해 사용자의 신원을 효과적으로 보호 할 수 있습니다. 동시에, 비밀 키를 보호하고 토큰의 만료 시간을 합리적으로 설정하면 시스템 보안이 더욱 향상 될 수 있습니다.