JWT (JSON Web Token)는 네트워크 응용 프로그램에서 토큰을 안전하게 전송하는 데 사용되는 개방 표준 (RFC 7519)입니다. 사용자 ID 인증 및 권한 관리에 널리 사용됩니다. 인기있는 PHP 프레임 워크 인 ThinkPhp6은 풍부한 구성 요소 지원을 제공하여 개발자가 JWT 인증 기능을 통합 할 수 있도록 촉진합니다. 이 기사는 ThinkPhP6에서 JWT 인증을 구현하는 방법을 점차 설명합니다.
먼저 작곡가를 통해 JWT 관련 확장 라이브러리를 설치해야합니다. 프로젝트 루트 디렉토리를 입력하고 터미널에서 다음 명령을 실행하십시오.
<span class="fun">작곡가에는 Firebase/PHP-JWT가 필요합니다</span>
설치가 완료된 후 ThinkPhp6의 구성 디렉토리에서 JWT.php 파일을 작성 또는 수정하고 다음 내용을 구성합니다.
return [
'secret' => 'your_secret_key',
'algorithm' => 'HS256',
];
그중에서도 Secret 은 서명에 사용되는 키이며 임의의 문자열로 설정하는 것이 좋습니다. 알고리즘은 HS256, HS384 또는 HS512 옵션이있는 암호화 알고리즘입니다.
인증 미들웨어는 요청이 컨트롤러에 도달하기 전에 JWT 토큰을 확인하는 데 사용됩니다. 명령을 사용하여 미들웨어를 신속하게 생성하십시오.
<span class="fun">PHP Think Make : Middleware JWTMIDDLEWARE</span>
이 명령은 앱/미들웨어 디렉토리에서 jwtmiddleware 클래스 파일을 생성합니다.
JWTMIDDLEWARE 파일을 열고 인증 코드를 보충하십시오.
use think\facade\Request;
use think\facade\Response;
use Firebase\JWT\JWT;
class JwtMiddleware
{
public function handle($request, \Closure $next)
{
$token = Request::header('Authorization');
if (empty($token)) {
return Response::create('Unauthorized', '401');
}
try {
JWT::decode($token, config('jwt.secret'), [config('jwt.algorithm')]);
} catch (\Exception $e) {
return Response::create('Invalid token', '401');
}
return $next($request);
}
}
코드에서 먼저 요청 헤더에서 JWT 토큰을 얻고 비어있는 경우 401 오류를 반환합니다. 그런 다음 토큰의 정당성을 확인하고 실패하면 401도 반환합니다. 확인이 통과되면 후속 요청이 계속 실행됩니다.
Route/Route.php 에서 인증이 필요한 경로에 미들웨어를 추가하십시오.
\think\Route::group(function () {
// 인증이 필요한 경로
})->middleware(\app\middleware\JwtMiddleware::class);
컨트롤러 클래스 주석에서 미들웨어를 선언 할 수도 있습니다.
namespace app\controller;
use think\annotation\route\Post;
use app\middleware\JwtMiddleware;
/**
* @route("auth")
* @middleware(JwtMiddleware::class)
*/
class AuthController
{
// 컨트롤러 코드
}
이러한 방식으로 컨트롤러의 모든 경로는 JWT 인증 미들웨어를 자동으로 전달합니다.
구성이 완료되면 Postman 또는 기타 인터페이스 테스트 도구를 사용하여 유효한 JWT 토큰으로 요청을 보내어 인터페이스가 정상적으로 응답하는지 확인하십시오. 무효 또는 누락 된 토큰이 있으면 401 무단 오류를 반환해야합니다.
이 기사에서는 ThinkPhp6 프레임 워크에서 JWT 인증을 통합하는 방법에 대해 설명합니다. 여기에는 확장 된 설치, 구성, 인증 미들웨어 생성 및 응용 프로그램 및 인터페이스 테스트의 전체 프로세스가 포함됩니다. JWT 인증을 구현함으로써 응용 프로그램의 보안이 개선 될 수 있으며 효율적인 사용자 ID 관리를 달성 할 수 있습니다.