오늘날 인터넷 애플리케이션의 대규모 개발에서 사용자 보안 인증은 필수적인 부분입니다. 사용자 보안을 보장하기 위해 인증에 JWT(JSON 웹 토큰)를 사용하는 것이 일반적인 방법입니다. 사용자 인증 및 권한 제어를 쉽고 효과적으로 구현할 수 있습니다. 이 글에서는 ThinkPHP6 프로젝트에서 인증을 위해 JWT를 사용하는 방법을 소개합니다.
JSON 웹 토큰이란 무엇인가요?
JSON 웹 토큰(JWT)은 경량 인증 메커니즘입니다. 클레임을 네트워크를 통해 안전하게 전송하는 것이 목적이며, 인증 및 클레임 교환의 수단으로 사용될 수 있습니다. JWT는 HTTP 요청 헤더나 URL 매개변수에 포함되어 있어 서버와 클라이언트 간에 쉽고 편리하게 전송됩니다.
JWT는 헤더, 페이로드, 서명의 세 부분으로 구성됩니다. 헤더에는 서명 알고리즘 및 유형을 설명하는 정보가 포함되고, 페이로드에는 선언 및 데이터 정보가 포함되며, 서명은 JWT의 적법성을 확인하는 데 사용됩니다. 모든 데이터는 JWT 페이로드에 저장될 수 있으며 필요한 정보를 맞춤설정할 수 있습니다.
ThinkPHP6에서 인증을 위해 JWT를 사용하는 단계
1단계: jwt-auth 확장 설치
먼저 프로젝트에 jwt-auth 확장을 도입해야 합니다. 작곡가.json 파일에 다음 종속성을 추가합니다.
"tymon/jwt-auth": "^1.0.0-rc.5"
종속성을 설치한 후 작곡가 업데이트를 사용하여 업데이트하세요.
2단계: 구성 파일 생성
다음 명령을 실행하여 구성 파일을 생성합니다.
php think jwt:publish
구성 파일을 생성한 후 구성을 수정하고 JWT 키 및 유효 기간과 같은 매개변수를 설정하고 /config/jwt.php 파일.
3단계: 인증 미들웨어 작성
JWT의 인증 프로세스는 서버 측에서 완료되어야 합니다. 따라서 요청이 컨트롤러에 도달하기 전에 JWT를 인증하기 위해 미들웨어 AuthMiddleware를 생성해야 합니다.
먼저 AuthMiddleware 파일을 생성해야 합니다:
php think make:middleware AuthMiddleware
AuthMiddleware 파일에서 다음 코드를 사용하여 JWT를 인증할 수 있습니다.
<?php namespace appmiddleware; use thinkacadeRequest; use TymonJWTAuthExceptionsTokenExpiredException; use TymonJWTAuthFacadesJWTAuth; use thinkexceptionHttpException; class AuthMiddleware { public function handle($request, Closure $next) { //获取JWT token $token = JWTAuth::getToken(); if (!$token) { throw new HttpException(401, 'Token not provided'); } try { //验证JWT token $user = JWTAuth::authenticate($token); $request->user = $user; } catch (TokenExpiredException $exception) { throw new HttpException(401, 'Token expired'); } catch (Exception $exception) { throw new HttpException(401, 'Token invalid'); } return $next($request); } }
핸들 함수에서 먼저 JWT의 토큰을 얻습니다. 토큰이 존재하지 않으면 401 예외가 발생합니다.
토큰이 존재하는 경우 JWTAuth::authenticate($token)을 사용하여 토큰의 유효성을 확인합니다. 성공하면 사용자 정보가 요청 컨텍스트에 바인딩됩니다.
위 코드에서 발생한 모든 예외는 401 오류 코드를 반환한다는 점에 유의해야 합니다.
4단계: 인증을 위해 미들웨어 사용
아래 표시된 대로 컨트롤러에서 AuthMiddleware 미들웨어를 사용하여 인증합니다.
<?php namespace appcontroller; use appmiddlewareAuthMiddleware; class UserController extends Base { protected $middleware = [ AuthMiddleware::class ]; public function index() { return json($this->request->user, 200); } }
위 코드에서는 컨트롤러에 AuthMiddleware 미들웨어를 추가했으므로 요청 시 이 미들웨어는 자동으로 컨트롤러에 도달하기 전에 실행됩니다.
컨트롤러의 index 메소드는 현재 요청 중인 사용자 정보를 반환합니다. JWT 인증이 올바른 경우 json 형식의 사용자 정보가 반환됩니다.
결론
이 글에서는 ThinkPHP6 프로젝트에서 JWT를 인증에 활용하는 방법을 소개합니다. JWT 확장 설치 및 구성 파일 생성, 인증 미들웨어 작성, 미들웨어 사용 등 JWT 인증 구현 과정을 자세히 소개했다. 이 과정에서 우리는 JWT 관련 지식에 대해 더 깊은 이해를 얻었고 향후 인터넷 발전을 위한 귀중한 경험을 제공했습니다.
위 내용은 ThinkPHP6에서 인증을 위해 JWT 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!