Laravel Framework에서 Middleware는 HTTP 요청을 처리하는 프로세스의 중요한 부분이며 종종 인증, 권한 점검, 로깅 및 요청 수정과 같은 기능에 사용됩니다. 요청을 가로 채고 처리하는 유연하고 우아한 방법을 제공하여 응용 프로그램의 논리를 더 명확하고 구조화합니다.
Laravel의 미들웨어는 앱/http/미들웨어 디렉토리에 있으며 Artisan 명령을 통해 또는 수동으로 만들 수 있습니다. 미들웨어는 본질적으로 요청을 받고 응답을 반환하는 클래스입니다. 핵심 함수는 핸들 () 이며 요청 객체와 클로저를 수락합니다. 논리를 처리 한 후에는 요청이 전달되거나 응답으로 직접 반환됩니다.
HTTP 요청이 응용 프로그램에 도달하면 시스템은 미들웨어 등록 순서에 따라 각 미들웨어를 순서대로 실행합니다. 미들웨어가 응답을 반환하면 후속 처리 프로세스가 중단되고 결과는 클라이언트에게 직접 반환됩니다.
미들웨어 등록은 글로벌 등록 및 라우팅 등록의 두 가지 방법으로 나뉩니다. 글로벌 미들웨어는 모든 요청에 따라 작용하며 앱/http/kernel.php 파일의 $ 미들웨어 속성에 정의됩니다.
protected $middleware = [
\App\Http\Middleware\CheckToken::class,
];
미들웨어가 특정 경로에서만 행동하기를 원한다면 $ lourmiddleware를 사용하여 등록 할 수 있습니다.
protected $routeMiddleware = [
'checkRole' => \App\Http\Middleware\CheckRole::class,
];
그런 다음 경로에서 미들웨어 방법을 참조하십시오.
Route::get('/admin', function () {
// 백엔드 페이지
})->middleware('checkRole');
미들웨어가 실행되는 순서는 등록 명령에 따라 다릅니다. 글로벌 미들웨어는 배열 순서대로 실행되며 라우팅 미들웨어는 경로 정의에서 배열 순서대로 실행됩니다. PHP Artisan Route : List를 사용하여 미들웨어 사용을 볼 수 있습니다.
여러 경로가 동일한 미들웨어 수집을 공유하면 그룹화를 통해 관리를 단순화 할 수 있습니다. 예를 들어:
Route::group(['middleware' => 'admin'], function () {
// 모든 배경 경로
});
현재 그룹의 모든 경로는 관리 미들웨어를 자동으로로드합니다.
다음은 미들웨어의 특정 응용 프로그램을 보여주는 인증 예입니다.
1. 미들웨어 만들기 :
php artisan make:middleware Authenticate
2. 미들웨어 논리 작성 :
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class Authenticate
{
public function handle(Request $request, Closure $next)
{
$token = $request->header('Authorization');
if ($token != 'secret_token') {
return response()->json(['error' => 'Unauthorized'], 401);
}
return $next($request);
}
}
3. 미들웨어 등록 :
protected $middleware = [
\App\Http\Middleware\Authenticate::class,
];
4. 라우팅에 적용 : :
Route::get('/api', function () {
// 보호 된 인터페이스
})->middleware('auth');
이 미들웨어는 요청 헤더의 인증 필드를 확인합니다. 사전 설정 토큰이 일치하지 않으면 401 오류를 직접 반환합니다. 그렇지 않으면 요청이 계속 처리됩니다.
Laravel Middleware는 개발자에게 HTTP 요청을 가로 채고 처리 할 수있는 강력하고 유연한 방법을 제공합니다. 미들웨어를 합리적으로 사용하면 컨트롤러 로직을 단순화 할 수 있으며 시스템 보안 및 유지 관리 가능성을 향상시킬 수 있습니다. 미들웨어의 원칙과 응용 기술을 마스터하면보다 강력한 웹 응용 프로그램을 구축하는 데 도움이됩니다.