찾다
PHP 프레임워크LaravelLaravel API 개발 : RESTFUL DESIGN 및 JWT 인증

Laravel API 개발 : RESTFUL DESIGN 및 JWT 인증

Apr 30, 2025 pm 02:12 PM
laravelcomposercad도구ai사용자 등록코드 가독성red

Laravel에서 편안한 API를 구축하고 사용자 인증을 위해 JWT를 사용하는 방법은 다음과 같습니다. 1. Laravel의 라우팅 시스템을 사용하여 편안한 API 작업을 정의하십시오. 2. JWT 인증을 처리하기 위해 Tymon/JWT-Auth 패키지를 설치하고 구성하십시오. 3. 사용자 모델에서 jwtsubject 인터페이스를 구현하십시오. 4. JWT를 확인하기 위해 미들웨어를 작성하십시오. 5. 사용자 등록 및 로그인 기능을 구현하고 JWT에 사용자 정의 문을 추가하여 권한을 제어하십시오.

Laravel API 개발 : RESTFUL DESIGN 및 JWT 인증

소개

최신 웹 개발에서 API 설계 및 보안 인증은 두 가지 중요한 링크입니다. 오늘 우리는 Laravel Framework 아래에서 편안한 API를 구축하는 방법을 심층적으로 탐색하고 JWT (JSON Web Token)를 결합하여 사용자 인증을 달성 할 것입니다. 이 기사를 통해 효율적이고 안전한 API를 설계하고 Laravel에서 JWT의 기술을 마스터하는 방법을 배우게됩니다.

기본 지식 검토

시작하기 전에 Restful API 및 JWT의 기본 개념을 빠르게 검토합시다. RESTFUL API는 HTTP 프로토콜을 기반으로 한 건축 스타일입니다. 다양한 HTTP 방법 (예 : Get, Post, Put, Delete)을 통해 리소스를 작동시킵니다. JWT는 JSON 객체로 인코딩 된 당사자간에 정보를 안전하게 전송하는 소형적이고 자 급식 방법입니다.

Laravel에서는 강력한 라우팅 시스템과 미들웨어를 사용하여 Restful API를 구현하면서 tymon/jwt-auth 와 같은 타사 라이브러리를 사용하여 JWT 인증을 처리 할 수 ​​있습니다.

핵심 개념 또는 기능 분석

RESTFUL API 설계 및 LARAVAL 구현

RESTFUL API의 설계 핵심은 리소스의 정의 및 운영에 있습니다. 각 리소스에는 고유 식별자 (일반적으로 URL)가 있어야하며 HTTP 방법을 통해 CRUD (작성, 읽기, 업데이트, 삭제)를 수행해야합니다.

Laravel에서는 경로를 사용하여 이러한 작업을 정의 할 수 있습니다. 예를 들어:

 route :: get ( '/user', 'usercontroller@index');
route :: post ( '/user', 'usercontroller@store');
route :: get ( '/user/{id}', 'usercontroller@show');
route :: put ( '/user/{id}', 'usercontroller@update');
route :: delete ( '/user/{id}', 'usercontroller@destroy');

이 디자인은 명확하고 명확 할뿐만 아니라 편안한 사양을 준수합니다. Laravel의 리소스 컨트롤러는 라우팅 정의를 더욱 단순화 할 수 있음을 주목할 가치가 있습니다.

 Route :: Resource ( '사용자', 'UserController');

JWT 인증의 작동 방식

JWT 인증의 핵심은 토큰을 생성하고 확인하는 것입니다. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. Laravel에서는 tymon/jwt-auth 패키지를 사용하여 JWT의 처리를 단순화 할 수 있습니다.

먼저 tymon/jwt-auth 설치하고 구성해야합니다.

 작곡가는 Tymon/JWT-Auth가 필요합니다

그런 다음 User 모델에서 JWTSubject 인터페이스를 구현하십시오.

 tymon \ jwtauth \ contracts \ jwtsubject;

클래스 사용자는 authenticatable emplements jwtsubject를 확장합니다
{
    // ... 기타 코드 공개 기능 getJwtIngifier ()
    {
        return $ this-> getkey ();
    }

    공개 기능 getJwtCustomClaims ()
    {
        반품 [];
    }
}

다음으로 JWT를 확인하기 위해 미들웨어를 만들 수 있습니다.

 폐쇄를 사용하십시오.
tymon \ jwtauth \ facades \ jwtauth를 사용하십시오.

클래스 jwtmiddleware
{
    공개 기능 핸들 ($ 요청, 닫기 $ 다음)
    {
        노력하다 {
            $ user = jwtauth :: parsetoken ()-> authenticate ();
        } catch (예외 $ e) {
            if ($ e instanceof \ tymon \ jwtauth \ Extrections \ TokeninValidexception) {
                return response ()-> json ([ 'status'=> '토큰이 잘못되었습니다']);
            } else if ($ e instanceof \ tymon \ jwtauth \ exceptions \ tokenexpiredException) {
                return response ()-> json ([ 'status'=> '토큰이 만료 됨]);
            }또 다른{
                return response ()-> json ([ 'status'=> '권한을 찾을 수 없음]);
            }
        }
        return $ 다음 ($ 요청);
    }
}

사용의 예

기본 사용

사용자 등록 및 로그인의 간단한 예를 살펴 보겠습니다.

 공개 기능 레지스터 (요청 $ 요청)
{
    $ validator = validator :: make ($ request-> all (), [
        'name'=> '필수 | 문자열 | max : 255',
        '이메일'=> '필수 | 문자열 | 이메일 | 최대 : 255 | 고유 : 사용자',
        'password'=> '필수 | 문자열 | Min : 6 | 확인',
    ]);

    if ($ validator-> failss ()) {
        return response ()-> json ($ validator-> errors ()-> tojson (), 400);
    }

    $ user = user :: create ([[
        '이름'=> $ request-> get ( 'name'),
        '이메일'=> $ request-> get ( 'email'),
        'password'=> hash :: make ($ request-> get ( 'password')),
    ]);

    $ token = jwtauth :: fromUser ($ user);

    return response ()-> json (compact ( 'user', 'token'), 201);
}

공개 기능 로그인 (요청 $ 요청)
{
    $ credentials = $ request-> 만 ( '이메일', '비밀번호');

    노력하다 {
        if (! $ token = jwtauth :: 시도 ($ credentials)) {
            return response ()-> json ([ 'error'=> 'invalid credentials'], 401);
        }
    } catch (jwtexception $ e) {
        return response ()-> json ([ 'error'=> '는 토큰을 만들 수 없다', 500);
    }

    return response ()-> json (compact ( 'Token'));
}

고급 사용

실제 응용 프로그램에서는 사용자 역할과 같은 JWT에 사용자 정의 클레임 (클레임)을 추가해야 할 수도 있습니다.

 공개 기능 getJwtCustomClaims ()
{
    반품 [
        '역할'=> $ this-> 역할,
    ];
}

이러한 방식으로 JWT를 확인할 때 역할에 따라 사용자의 권한을 제어 할 수 있습니다.

 공개 기능 핸들 ($ 요청, 닫기 $ 다음)
{
    $ user = jwtauth :: parsetoken ()-> authenticate ();
    if ($ user-> role! == 'admin') {
        return response ()-> json ([ 'error'=> '무단'], 403);
    }
    return $ 다음 ($ 요청);
}

일반적인 오류 및 디버깅 팁

JWT를 사용할 때의 일반적인 오류에는 토큰 만료, 토큰이 유효하지 않거나 토큰 누락이 포함됩니다. 디버깅은 다음과 같은 방법으로 수행 할 수 있습니다.

  • 토큰이 생성되어 올바르게 전달되는지 확인하십시오
  • 토큰 만료 문제를 피하기 위해 서버 시간이 클라이언트 시간과 동기화되도록하십시오.
  • tymon/jwt-auth 가 제공하는 디버깅 도구를 사용하여 토큰의 자세한 정보를보십시오.

성능 최적화 및 모범 사례

JWT 및 RESTful API를 최적화 할 때는 다음과 같은 점을 고려해야합니다.

  • 토큰 수명주기 관리 : 애플리케이션에 따라 합리적인 토큰 만료 시간을 설정하여 빈번한 토큰 새로 고침을 피하고 보안을 보장합니다.
  • 캐싱 정책 : 자주 액세스하는 리소스의 경우 Laravel의 캐싱 메커니즘을 사용하여 응답 속도를 향상시킬 수 있습니다.
  • 코드 가독성 및 유지 보수 : Laravel의 이름 지정 규칙 및 코드 스타일을 따라 코드를 이해하고 유지 관리하기 쉽습니다.

실제 프로젝트에서는 문제가 발생했습니다. 토큰 만료 시간이 너무 짧아서 사용자가 다시 로그인해야하므로 사용자 경험에 영향을 미칩니다. 토큰의 만료 시간을 조정하고 토큰 자동 새로 고침 메커니즘을 구현 하여이 문제를 성공적으로 해결했습니다.

요컨대, JWT와 결합 된 Laravel은 RESTFUL API를 구축하기위한 강력하고 유연한 솔루션을 제공합니다. 이 기사의 소개 및 예를 통해 이러한 기술을 더 잘 이해하고 적용 할 수 있어야합니다. 이러한 경험과 제안이 실제 프로젝트에서 편안하게 도움이 될 수 있기를 바랍니다.

위 내용은 Laravel API 개발 : RESTFUL DESIGN 및 JWT 인증의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
작업 관리 도구 : 원격 프로젝트의 진행 상황 우선 순위 및 추적작업 관리 도구 : 원격 프로젝트의 진행 상황 우선 순위 및 추적May 02, 2025 am 12:25 AM

taskManagementToolsEnsentialForeMoteProjectManagementByPirizingTaskSandTrackingProgress.1) USETOOLSLIKETRELLOANATOSETPRIORITIESWITHLABELSORTAGS.2) EmployToolslikeJiraanddonday.comforvisualTrackingWithGantTchartSandprogressbars.3) k

최신 Laravel 버전은 성능을 어떻게 향상 시키는가?최신 Laravel 버전은 성능을 어떻게 향상 시키는가?May 02, 2025 am 12:24 AM

Laravel10EnhancesPerformancetHroughseveralKeyFeatures.1) ItinTroduceSqueryBuilderCachingTucedAtabaseload.2) ITOPTIMIZESELOQUENTMODELLOADINGWITHLAZYLOWNEDPROXIES.3) ITIMPROVESTINGWITHANEWCACHINGSYSTEM.4) ITENHANCES WITHENTEMPHANCES BLOWTETETEMPLOTETEMPHENCESTEMPHENTSE

풀 스택 Laravel 애플리케이션을위한 배포 전략풀 스택 Laravel 애플리케이션을위한 배포 전략May 02, 2025 am 12:22 AM

최고의 풀 스택 Laravel 애플리케이션 배포 전략에는 다음이 포함됩니다. 1. 제로 다운 타임 배포, 2. 청록색 배포, 3. 연속 배포 및 4. Canary Release. 1. 제로 다운 타임 배포는 Envoy 또는 배치자를 사용하여 배포 프로세스를 자동화하여 업데이트 될 때 애플리케이션을 사용할 수 있도록합니다. 2. Blue 및 Green Deployment는 두 가지 환경을 유지하여 다운 타임 배포를 가능하게하며 빠른 롤백을 허용합니다. 3. 지속적인 배포는 githubactions 또는 gitlabci/cd를 통해 전체 배포 프로세스를 자동화합니다. 4. Canary는 NGINX 구성을 통해 출시되어 성능 최적화와 빠른 롤백을 보장하기 위해 사용자에게 새 버전을 점차 홍보합니다.

풀 스택 Laravel 애플리케이션 스케일링 : 모범 사례 및 기술풀 스택 Laravel 애플리케이션 스케일링 : 모범 사례 및 기술May 02, 2025 am 12:22 AM

ToscalealaravelApplicationeficationfictically, Focusondatabasesharding, 캐싱, 하중 발행 및 Microservices.1) 구현 대자 방당 분배 된 분산 된 타타 이탈 라제스 퍼포먼스

침묵의 투쟁 : 분산 팀의 커뮤니케이션 장벽 극복침묵의 투쟁 : 분산 팀의 커뮤니케이션 장벽 극복May 02, 2025 am 12:20 AM

TovercomeCommunicationBarriersindistributedTeams, 사용 : 1) videocallsforface-to-faceintercation, 2) setClearResponsetImeexpectations, 3) ChooseAppropriateCommunicationTools, 4) CreateAteAmcommunicationGuide, 및 5) spuctionPersonalboundIVestOverventBurnout

풀 스택 프로젝트에서 프론트 엔드 템플릿에 Laravel Blade 사용풀 스택 프로젝트에서 프론트 엔드 템플릿에 Laravel Blade 사용May 01, 2025 am 12:24 AM

laravelbladeenhancesfrontendtemplatinginfull-stackprojectsbyofferingcleansyntaxandpowerfulfeatures.1) itallowsforeasyvaribledisplayandcontrolstructures.2) bladesupportscreatingAndAndErscreatingCreatingScreatingAndErsingComponents, aidingininagingComplexUis.3) iteffort handleslyous

Laravel을 사용한 전체 스택 애플리케이션 구축 : 실용적인 튜토리얼Laravel을 사용한 전체 스택 애플리케이션 구축 : 실용적인 튜토리얼May 01, 2025 am 12:23 AM

laravelisidealforfull-stackapplicationsduetoitselegantsyntax, 포괄적 인 Cosystem 및 powerfulfeatures.1) audeeloquentormforintucive backenddatamanipulation, butavoidn 1queryisss.2) Employblatingforcleanfrontendviews, beencautiousofoversing@i

원격 역할을 유지하기 위해 어떤 종류의 도구를 사용 했습니까?원격 역할을 유지하기 위해 어떤 종류의 도구를 사용 했습니까?May 01, 2025 am 12:21 AM

FERREMOTWORK, IUSEZOOMFORVIDEOCALLS, SLACKFORMESSIGAGIGAGING, TRELLOFORPROJECTMENAGEMENT, 및 GITHUBFORCODECOLABORATION.1) ZOOMISRELIBLEFORLARGEMEETINGSBUTHIMELIMITSONTHEFREEVERSION.2) SlackIntegrateswellwellsButcanLeadtonoTificationWovernovernovernovernovernovernodificationwordnowload

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기