>PHP 프레임워크 >Laravel >라라벨 월드 미들웨어의 수호자

라라벨 월드 미들웨어의 수호자

灭绝师太
灭绝师太원래의
2021-12-06 17:27:222052검색

라라벨 월드 미들웨어의 수호자

 미들웨어는 요청을 필터링할 수 있습니다. 여기서 미들웨어를 사용하여 사용자가 로그인되어 있는지 확인할 수 있습니다. 사용자가 로그인되어 있으면 원래 작업을 계속 수행할 수 있으며, 로그인되어 있지 않으면 리디렉션됩니다. 사용자가 먼저 로그인할 수 있도록 로그인 페이지로 이동합니다.

1. 미들웨어 정의

php artsian make:middleware 命令 创建中间件,文件路径: appHttpMiddlewareCheckToken.php

php artisan make:middleware CheckToken
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;

class CheckToken
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
       //在这里做一个判断,如果token不是 &#39;my-secret-token&#39;,则重定向
       if ($request->input(&#39;token&#39;) !== &#39;my-secret-token&#39;) {
            return redirect(&#39;home&#39;);
        }
        return $next($request);
    }
}

을 통해 2. 미들웨어 분류

  • 프리 미들웨어

<?php
namespace App\Http\Middleware;
use Closure;
class BeforeMiddleware
{
    public function handle($request, Closure $next)
    {
         ...
        // 应用请求之前执行一些任务
        return $next($request);
    }
}
  • 포스트 미들웨어

<?php
namespace App\Http\Middleware;
use Closure;
class AfterMiddleware
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);
        // 应用请求之后执行一些任务
        return $response;
    }
}

3. 미들웨어 사용

  • 미들웨어를 전역적으로 사용

//在app\Http\Kernel.php中的$middleware内添加
 protected $middleware = [
        // \App\Http\Middleware\TrustHosts::class,
        ....
        ....
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        //这是之前定义的
        \App\Http\Middleware\CheckToken::class,
    ];
  • 미들웨어 그룹 사용

//在app\Http\Kernel.php中的$middlewareGroups内添加
  protected $middlewareGroups = [
      &#39;web&#39; => [
           ....
        ],

        &#39;api&#39; => [
           ....
        ],
        &#39;diy&#39; =>[
          //可以在web组和api组中添加,也可以自己diy一个
        ]
    ];
//路由中使用,RouteServiceProvider 默认将 web 和 api 中间件组自动应用到 routes/web.php 和 routes/api.php
Route::get(&#39;/u&#39;, function () {

})->middleware(&#39;diy&#39;);
  • 미들웨어만 사용

    protected $routeMiddleware = [
         ...,
         &#39;myself&#39;=> \App\Http\Middleware\CheckToken::class,
        ];
Route::get(&#39;/user&#39;, function () {
    //
})->middleware(&#39;myself&#39;);

관련 동영상 튜토리얼 권장사항: Laravel 비디오 튜토리얼

위 내용은 라라벨 월드 미들웨어의 수호자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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