>PHP 프레임워크 >Laravel >Laravel에서 JWT를 사용하는 방법

Laravel에서 JWT를 사용하는 방법

王林
王林원래의
2023-05-21 10:40:071987검색

API가 지속적으로 개발됨에 따라 JWT(JSON 웹 토큰)를 사용하여 사용자 인증 및 권한 부여를 구현해야 하는 웹 애플리케이션이 점점 더 많아지고 있습니다. API 개발을 위한 기본 프레임워크로서 Laravel은 JWT도 지원합니다. 이번 글에서는 Laravel에서 JWT를 사용하는 방법을 소개하겠습니다.

JWT란 무엇인가요?

JSON 웹 토큰(JWT)은 당사자 간 JSON 개체로 클레임을 안전하게 전송하기 위한 개방형 표준(RFC 7519)입니다. JWT는 권한 부여, 인증 및 정보 교환에 사용될 수 있습니다. JWT는 일반적으로 HTTP 요청의 Authorization 헤더에 Bearer 토큰으로 전송됩니다.

JWT의 구조는 헤더, 페이로드, 서명의 세 부분으로 구성됩니다. 헤더와 페이로드는 모두 JSON 개체이며 서명은 이 두 부분을 결합한 암호화된 결과입니다. JWT의 구조는 매우 간단하므로 쉽게 구문 분석하고 검증할 수 있습니다.

Laravel에서 JWT를 어떻게 사용하나요?

JWT를 사용하려면 Laravel 프로젝트에 tymondesigns/jwt-auth 종속 라이브러리를 설치해야 합니다. Laravel 5.7 이상에서는 다음 명령을 사용하여 이 종속 라이브러리를 설치할 수 있습니다:

composer require tymon/jwt-auth

설치가 완료된 후 config/app.php 파일에 다음 서비스 공급자와 별칭을 추가해야 합니다:

'providers' => [
    // Other Service Providers
    TymonJWTAuthProvidersLaravelServiceProvider::class,
],

'aliases' => [
    // Other Aliases
    'JWTAuth' => TymonJWTAuthFacadesJWTAuth::class,
    'JWTFactory' => TymonJWTAuthFacadesJWTFactory::class,
],

Next , JWT 키를 생성해야 합니다. 키는 다음 명령을 사용하여 생성할 수 있습니다:

php artisan jwt:secret

이 명령은 임의의 키를 생성하여 config/jwt.php 파일에 추가합니다. 이 키를 보호하고 누구에게도 공개하지 않는 것이 중요합니다.

키를 생성한 후 Laravel에서 JWT 사용을 시작할 수 있습니다. JWT는 인증 및 승인에 사용될 수 있습니다.

JWT를 사용한 인증

Laravel에서 JWT를 사용하여 인증하는 과정은 다음과 같습니다.

  1. 사용자가 자격 증명(예: 사용자 이름 및 비밀번호)을 제출합니다.
  2. 애플리케이션은 이러한 자격 증명을 사용하여 JWT를 생성하고 이를 사용자에게 반환합니다.
  3. 사용자는 이후 요청에서 전달자 토큰으로 Authorization 헤더에 이 JWT를 포함합니다.
  4. 이 애플리케이션은 JWT에서 사용자 정보를 추출하고 신원을 확인합니다.

JWT를 생성하여 사용자에게 반환하는 코드는 다음과 같습니다.

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');

    if (!$token = JWTAuth::attempt($credentials)) {
        return response()->json(['error' => 'Unauthorized'], 401);
    }

    return response()->json(['token' => $token]);
}

JWT를 검증하고 사용자 정보를 추출하는 코드는 다음과 같습니다.

public function profile(Request $request)
{
    $user = JWTAuth::parseToken()->authenticate();

    return response()->json(['user' => $user]);
}

인증을 위해 JWT 사용

사용 과정 Laravel에서 인증을 위한 JWT는 다음과 같습니다.

  1. App 프로그램은 보호된 리소스에 액세스하기 전에 사용자의 신원을 확인합니다.
  2. 사용자가 인증된 경우 애플리케이션은 JWT에 적절한 역할 또는 권한이 포함되어 있는지 확인합니다.
  3. 사용자에게 적절한 역할이나 권한이 있는 경우 애플리케이션은 요청된 리소스에 대한 액세스 권한을 부여합니다.

JWT를 확인하고 사용자의 역할이나 권한을 확인하는 코드는 다음과 같습니다.

public function index(Request $request)
{
    $user = JWTAuth::parseToken()->authenticate();

    if ($user->hasRole('admin')) {
        $items = Item::all();
    } else {
        $items = Item::where('user_id', '=', $user->id)->get();
    }

    return response()->json(['items' => $items]);
}

여기서 hasRole() 메서드는 사용자 정의 메서드이며 User 모델에서 구현되어야 한다는 점에 유의해야 합니다.

Summary

이 글에서는 Laravel에서 인증 및 권한 부여를 위해 JWT를 사용하는 과정을 소개합니다. JWT는 다양한 공격으로부터 애플리케이션을 보호하는 안전하고 간단하며 확장 가능한 사용자 인증 메커니즘을 제공합니다. API가 필요한 웹 애플리케이션을 개발하는 경우 JWT를 사용하는 것이 좋은 선택입니다.

위 내용은 Laravel에서 JWT를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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