laravel 미들웨어 미들웨어

미들웨어 장인이 명령 : 새로운 미들웨어를 만들려면 메이크업을 사용할 수 있습니다 :

 
 

이 명령은 응용 프로그램 / HTTP / 미들웨어 디렉토리에 CheckAge 클래스의 이름을 설정합니다. 이러한면에서 우리는, 연령 변수는 경로를 액세스하기 위해 200보다 큰 미들웨어 나이 요청, 그렇지 않으면, 우리는 홈 "홈"이 URI에 사용자를 리디렉션 할 수 있습니다.

 
 

당신이 볼 수 있듯이 나이가 200보다 작 으면, 미들웨어는 HTTP 그렇지 않으면, 요청이 더 응용 프로그램에 전달되며, 클라이언트로 리디렉션 돌아갑니다. 다음 단지 $ $으로 요청과 메소드를 호출하고 (미들웨어있게 대응하는) 깊이로 어플리케이션 요청을 전달한다.

HTTP 요청 전에 애플리케이션에 실제 접촉하기 위해, 각 층은 바람직 미들웨어 사이로. 각 층은 요청을 검사, 또는 상기 요청을 거부 할 수있다.



등록 미들웨어 #

글로벌 미들웨어 #

각 HTTP 요청이 미들웨어를 통과하려면, $ 미들웨어 속성 재고 목록은 미들웨어 클래스는 응용 프로그램 / HTTP / Kernel.php에 추가 한한다.

라우팅 할당 미들웨어 #

특정 경로 미들웨어에 할당 할 경우, 당신은 기본적으로 우호적 인 결합을 설정하는 응용 프로그램 / HTTP / Kernel.php 미들웨어에 있어야,이 파일의 중간에 $ routeMiddleware 속성은 이미 Laravel의 현재 세트가 포함되어 있습니다 조각, 당신은 단지 키 세트는 인벤토리 목록에서 사용자 정의 할 수 있습니다 추가해야합니다.

 
 

미들웨어는 HTTP 커널 파일에 정의 된 후에는 라우팅 옵션에서 미들웨어 키의 사용을 지정할 수 있습니다 :

 
 

여러 미들웨어 경로를 지정합니다 :

 
 

당신은 경로 할당 된 미들웨어로 전체 클래스 이름을 사용할 수 있습니다.

 
 

미들웨어 그룹 #

때때로 당신은 쉽게 $ middlewareGroups의 HTTP 커널을 사용하여 얻을 수있는 경로에 할당하고, 내부의 관련 미들웨어의 그룹에 할당됩니다 키 이름을 지정하여 방법을 할 수 있습니다.

Laravel 自带了开箱即用的web和api两个中间件组以包含可以应用到 Web UI 和 API 路由的通用中间件:

 
 

中间件组可以被分配给路由和控制器动作,使用和单个中间件分配同样的语法。再次申明,中间件组的目的只是让一次分配给路由多个中间件的实现更加简单:

 
{tip} 默认情况下,RouteServiceProvider 已经为 routes.php 文件指定了 web 中间件组。


 

例子:

创建中间件

php artisan make:middleware AdminMiddleware

 

中间件编写登录验证

public function handle($request, Closure $next)
    {    
        
        if( !session()->get('userInfo') ){
            return redirect('admin/login');
        }
        return $next($request);
    }

 

注册中间件  (Kernel.php)

protected $middlewareGroups = [
        'web' => [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Illuminate\Session\Middleware\AuthenticateSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \Illuminate\Session\Middleware\StartSession::class,
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];

 

 

使用:

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\BaseController;
use Illuminate\Http\Request;
//use DB;
use Illuminate\Support\Facades\DB;
use App\Model\admin;

class IndexController extends BaseController
{
    public function __construct(){
        
        $this->middleware('admin.auth')->except(['login','signin']);
    }
}

 

추천

출처www.cnblogs.com/jasonLiu2018/p/11793455.html