Laavel 중간부품 설정 정보

9663 단어 Laravelmiddleware

컨텐트

  • 라벨의 중간부품 설정 방법에 대한 간단한 요약
  • 구체적인 중간부품 처리의 실시에 대해 기록이 없다.
  • 컨디션

  • macOS Mojave 10.14.6
  • Laravel Framework 5.8.33
  • Middleware란


  • 중간부품에서 사용자의 HTTP 요청에 대해 처리 전후에 추가할 처리를 삽입할 수 있습니다.
  • 앞뒤 처리는 각각 Before Middleware와 After Middleware라고 하는데 렌더링하기 전의 입구와 출구는 중간부품을 통과한다.그 Before와 After의 구분은 Middleware 반에서 이루어집니다.
  • Middleware 클래스 생성


    Middleware 클래스 생성을 Laavel의 프로젝트 디렉토리로 이동하고 다음 명령을 실행합니다.
    이번에는 Sample이라는 반 이름의 Middleware를 만들기로 했습니다.
    $ php artisan make:middleware {クラス名}
    
    // Sampleというクラス名の場合
    $ php artisan make:middleware Sample
    

  • Smaple.php 생성
  • 생성된 Middleware 클래스 내app/Http/Middleware/ 추가 설치
  • handle() 이전에 실제 내용을 기재하거나 뒤에 기재한 것에 따라 Before Middleware인지 after Middleware
  • 인지 구분할 수 있다.

    중간부품 등록


    Karnel은 실제적으로 Before Middleware나 After Middleware를 통해 완성하기 위한 중간부품입니다.php에 추기
    app/Http/Kernel.php
    <?php
    
    namespace App\Http;
    
    use Illuminate\Foundation\Http\Kernel as HttpKernel;
    
    class Kernel extends HttpKernel
    {
        protected $middleware = [
            \App\Http\Middleware\TrustProxies::class,
            \App\Http\Middleware\CheckForMaintenanceMode::class,
            \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
            ...
        ];
        protected $middlewareGroups = [
            'web' => [
                \App\Http\Middleware\EncryptCookies::class,
                \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
                \Illuminate\Session\Middleware\StartSession::class,
                ...
            ],
    
            'api' => [
                'throttle:60,1',
                'auth:api',
                ...
            ],
        ];
        protected $routeMiddleware = [
            'auth' => \App\Http\Middleware\Authenticate::class,
            'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
            'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
            ...
        ];
        protected $middlewarePriority = [
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\Authenticate::class,
            ...
        ];
    }
    
    

    $middleware (글로벌 중간부품)

  • 모든 HTTP 요청에 적용할 중간부품 쓰기
  • $middleware Groups (중간부품 그룹)

  • 여러 개의 중간부품을 총등록
  • 단축키를 지정하고 더 많은 중간부품을 그룹으로 등록
  • $route Middleware(루트 중간부품)

  • 단독 등록 중간부품
  • 단축키 통과를 지정하려는 중간부품을 쓰기
  • $middlewarePriority

  • 특정 순서에 따라 중간부품을 집행해야 하는 경우 기재 순서에 따라 중간부품을 우선적으로 집행한다
  • 전역 중간부품이 아닌 내용을 설명합니다.
  • $response = $next($request); 또는 $middlewareGroups에 등록된 가장 우선하고 싶은 내용도 여기에 적는다
  • route에 중간부품 분배


    $middleware Groups 할당

    $routeMiddleware에서 웹을 키로 등록하고 웹을 분배하는 경우
    /route/web.php
    // 1つのルートに対してミドルウェアを指定する場合
    Route::get('/', function () {
        //
    })->middleware('web');
    
    // 複数のルートに対してミドルウェアを指定する場合
    Route::group(['middleware' => ['web']], function () {
        //
    });
    

    $routeMiddleware 할당

    $middlewareGroups에 auth라는 중간부품을 등록하고 이 중간부품을 분배할 때
    /route/web.php
    // 一つのルートに対してミドルウェアを指定する場合
    Route::get('/', function () {
        //
    })->middleware('auth');
    
    // 1つのルートに対して複数のミドルウェアを指定する場合
    Route::get('/', function () {
        //
    })->middleware('auth', 'auth2');
    
    // 複数のルートに対して1つのミドルウェアを指定する場合
    Route::group(['middleware' => 'auth'], function () {
        //
    });
    
    // 複数のルートに対して複数のミドルウェアを指定する場合
    Route::group(['middleware' => ['auth', 'auth2'], function () {
        //
    });
    

    참고 자료


    https://readouble.com/laravel/5.8/ja/middleware.html
    https://www.ritolab.com/entry/69

    좋은 웹페이지 즐겨찾기