JWT (JSON Web Token)는 인증을위한 공개 표준으로 클라이언트와 서버간에 안전한 정보를 전달하여 사용자 ID를 인증합니다. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 그중에서도 헤더는 서명 알고리즘, 페이로드 스토어 사용자 정보를 지정하며 서명은 JWT의 무결성을 보장하고 변조 방지에 사용됩니다.
1. SANTELESS : JWT 토큰은 서버가 세션 정보를 저장하도록 요구하지 않으며 여러 서버간에 쉽게 확장 할 수 있습니다.
2. 보안 : JWT는 데이터 변조를 피하기 위해 서명을 통한 데이터의 무결성과 진정성을 보장합니다.
3. 확장 성 : JWT의로드 부분은 필요한 정보를 저장할 수 있으며 다양한 응용 프로그램 시나리오에 적합합니다.
ThinkPHP 프레임 워크에서 JWT를 사용하려면 먼저`FireBase/PHP-JWT` 라이브러리를 설치해야합니다. 작곡가를 사용하여 설치할 수 있으며 명령은 다음과 같습니다.
<span class="fun">작곡가에는 Firebase/PHP-JWT가 필요합니다</span>
JWT를 생성하는 프로세스에는 헤더 생성, 페이로드 설정 및 개인 키로 서명하는 것이 포함됩니다. ThinkPhp에서는 컨트롤러에 메소드를 작성하여 JWT를 생성 할 수 있습니다. 다음은 샘플 코드입니다.
use Firebase\JWT\JWT;
class UserController extends Controller {
public function createJwt($userId, $username) {
$key = 'your_secret_key';
$payload = array(
'user_id' => $userId,
'username' => $username,
'exp' => time() + 3600 // 만료 시간을 설정하십시오1시간
);
$jwt = JWT::encode($payload, $key);
return $jwt;
}
}
위의 코드에서`keatejwt` 메소드는 사용자 ID, 사용자 이름 및 만료 시간을 포함하여 JWT를 생성합니다.
확인 JWT는 미들웨어를 만들어 처리 할 수 있습니다. JWT 검증을위한 샘플 코드는 다음과 같습니다.
use Firebase\JWT\JWT;
class JwtMiddleware {
public function handle($request, Closure $next) {
$key = 'your_secret_key';
$jwt = $request->header('Authorization');
try {
JWT::decode($jwt, $key, array('HS256'));
return $next($request);
} catch (Exception $e) {
return response('Unauthorized.', 401);
}
}
}
이 예에서`handle '메소드는 JWT를 요청에서 추출하고 그 유효성을 확인합니다. JWT가 유효하면 요청이 계속됩니다. 그렇지 않으면 401 무단 응답이 반환됩니다.
특정 경로를 보호하기 위해 경로 정의시 JWT 검증 미들웨어를 적용 할 수 있습니다. 다음은 경로를 보호하기위한 샘플 코드입니다.
use Firebase\JWT\JWT;
Route::get('/protected', function () {
return response('Protected resource.');
})->middleware('jwt');
이 예에서 '미들웨어'메소드는 JWT Verification Middleware를`/protected` 경로에 적용하여 확인을 전달하는 요청 만 경로에 액세스 할 수 있도록합니다.
JWT를 사용하면 ThinkPHP 프레임 워크에서 효율적인 인증 및 인증 메커니즘을 구현할 수 있습니다. JWT의 사용은 응용 프로그램의 보안을 향상시킬뿐만 아니라 유연한 확장 성을 제공합니다. 이 튜토리얼은 JWT를 생성하고 JWT를 확인하고 JWT를 사용하여 민감한 경로를 보호하는 방법에 대해 설명합니다. 이 기사가 JWT를 더 잘 이해하고 적용하는 데 도움이되기를 바랍니다.