>  기사  >  PHP 프레임워크  >  ThinkPHP6에서 인증을 위해 JWT 사용

ThinkPHP6에서 인증을 위해 JWT 사용

王林
王林원래의
2023-06-21 13:34:401991검색

오늘날 인터넷 애플리케이션의 대규모 개발에서 사용자 보안 인증은 필수적인 부분입니다. 사용자 보안을 보장하기 위해 인증에 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 thinkacadeRequest;
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.