미들웨어에는 1. 인증, 2. EncryptCookies, 4. RedirectIfAuthenticated, 6. TrustProxies 등이 포함됩니다.
이 튜토리얼의 운영 환경: Windows 7 시스템, Laravel 6 버전, Dell G3 컴퓨터.
Laravel 자체 미들웨어
Laravel에는 인증, CSRF 보호 등을 포함한 일부 미들웨어가 함께 제공됩니다. Laravel이 특별히 활성화한 미들웨어는 appHttpKernel.php 파일을 통해 확인할 수 있습니다. AppHttpMiddleware(app/Http/Middleware 디렉토리에 있음)로 시작하는 미들웨어의 경우 해당 동작을 사용자 정의할 수 있습니다.
미들웨어 인증
소스 파일: appHttpMiddlewareHttpMiddlewareAuthenticate.php
appHttpMiddlewareHttpMiddlewareAuthenticate.php
<?php namespace App\Http\Middleware; use Illuminate\Auth\Middleware\Authenticate as Middleware; class Authenticate extends Middleware { /** * Get the path the user should be redirected to when they are not authenticated. * * @param \Illuminate\Http\Request $request * @return string */ protected function redirectTo($request) { if (! $request->expectsJson()) { return route('login'); } } }
作用:
用户身份验证。可修改 redirectTo 方法,返回未经身份验证的用户应该重定向到的路径。
CheckForMaintenanceMode 中间件
源文件 :appHttpMiddlewareCheckForMaintenanceMode.php
<?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware; class CheckForMaintenanceMode extends Middleware { /** * The URIs that should be reachable while maintenance mode is enabled. * * @var array */ protected $except = [ // ]; }
作用:
检测项目是否处于 维护模式。可通过 $except 数组属性设置在维护模式下仍能访问的网址。
EncryptCookies 中间件
源文件:appHttpMiddlewareEncryptCookies.php
<?php namespace App\Http\Middleware; use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; class EncryptCookies extends Middleware { /** * The names of the cookies that should not be encrypted. * * @var array */ protected $except = [ // ]; }
作用
对 Cookie 进行加解密处理与验证。可通过 $except 数组属性设置不做加密处理的 cookie。
RedirectIfAuthenticated 中间件
源文件:appHttpMiddlewareRedirectIfAuthenticated.php
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class RedirectIfAuthenticated { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param string|null $guard * @return mixed */ public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->check()) { return redirect('/home'); } return $next($request); } }
作用:
当请求页是 注册、登录、忘记密码 时,检测用户是否已经登录,如果已经登录,那么就重定向到首页,如果没有就打开相应界面。可以在 handle 方法中定制重定向到的路径。
TrimStrings 中间件
源文件:appHttpMiddlewareTrimStrings.php
<?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware; class TrimStrings extends Middleware { /** * The names of the attributes that should not be trimmed. * * @var array */ protected $except = [ 'password', 'password_confirmation', ]; }
作用:
对请求参数内容进行 前后空白字符清理。可通过 $except 数组属性设置不做处理的参数。
TrustProxies 中间件
源文件:appHttpMiddlewareTrustProxies.php
<?php namespace App\Http\Middleware; use Illuminate\Http\Request; use Fideloper\Proxy\TrustProxies as Middleware; class TrustProxies extends Middleware { /** * The trusted proxies for this application. * * @var array|string */ protected $proxies; /** * The headers that should be used to detect proxies. * * @var int */ protected $headers = Request::HEADER_X_FORWARDED_ALL; }
作用:
配置可信代理。可通过 $proxies 属性设置可信代理列表,$headers 属性设置用来检测代理的 HTTP 头字段。
VerifyCsrfToken 中间件
源文件:appHttpMiddlewareVerifyCsrfToken.php
<?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; class VerifyCsrfToken extends Middleware { /** * Indicates whether the XSRF-TOKEN cookie should be set on the response. * * @var bool */ protected $addHttpCookie = true; /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ // ]; }기능: 사용자 인증. 인증되지 않은 사용자를 리디렉션해야 하는 경로를 반환하도록 리디렉션To 메서드를 수정할 수 있습니다.
CheckForMaintenanceMode 미들웨어rrreee기능: 🎜🎜프로젝트가 유지 관리 모드인지 감지합니다. 유지 관리 모드에서 계속 액세스할 수 있는 URL은 $just 배열 속성을 통해 설정할 수 있습니다. 🎜🎜🎜EncryptCookies 미들웨어🎜🎜🎜소스 파일:
appHttpMiddlewareEncryptCookies.php
🎜rrreee🎜Function🎜🎜쿠키를 암호화, 해독 및 확인합니다. 암호화되지 않은 쿠키는 $just 배열 속성을 통해 설정할 수 있습니다. 🎜🎜🎜RedirectIfAuthenticated 미들웨어🎜🎜🎜소스 파일: appHttpMiddlewareRedirectIfAuthenticated.php
🎜rrreee🎜기능: 🎜🎜요청 페이지가 등록, 로그인, 비밀번호 분실인 경우 사용자가 로그인했는지 여부를 감지합니다. 사용자가 이미 로그인되어 있으면 홈페이지로 리디렉션하고, 그렇지 않은 경우 해당 인터페이스를 엽니다. 핸들 메소드에서 리디렉션 경로를 사용자 정의할 수 있습니다. 🎜🎜🎜TrimStrings middleware🎜🎜🎜소스 파일: appHttpMiddlewareTrimStrings.php
🎜rrreee🎜Function: 🎜🎜요청 매개변수 콘텐츠의 공백 문자를 정리합니다. 처리되지 않는 매개변수는 $just 배열 속성을 통해 설정할 수 있습니다. 🎜🎜🎜TrustProxies 미들웨어🎜🎜🎜소스 파일: appHttpMiddlewareTrustProxies.php
🎜rrreee🎜기능: 🎜🎜신뢰할 수 있는 프록시를 구성합니다. 신뢰할 수 있는 프록시 목록은 $proxies 속성을 통해 설정할 수 있으며 $headers 속성은 프록시를 감지하는 데 사용되는 HTTP 헤더 필드를 설정합니다. 🎜🎜🎜VerifyCsrfToken 미들웨어🎜🎜🎜소스 파일: appHttpMiddlewareVerifyCsrfToken.php
🎜rrreee🎜Function: 🎜🎜요청의 토큰이 세션에 저장된 토큰과 일치하는지 확인하세요. CSRF 검증을 수행하지 않는 URL은 $just 배열 속성을 통해 설정할 수 있습니다. 🎜🎜🎜관련 추천: 🎜최신 5개의 Laravel 비디오 튜토리얼🎜🎜🎜위 내용은 라라벨 미들웨어란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!