好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Laravel5.1框架注冊中間件的三種場景詳解

Laravel5.1框架注冊中間件的三種場景詳解

熱門標簽:百度地圖標注偏差 廣東廣州在怎么申請400電話 咸寧銷售電銷機器人系統 400電話蘭州申請請 開發地圖標注類網站 百度地圖怎樣標注圖標 電銷機器人問門薩維品牌my 余姚電話機器人 外呼系統能給企業帶來哪些好處

本文實例講述了Laravel5.1框架注冊中間件的三種場景。分享給大家供大家參考,具體如下:

在Laravel中注冊中間件主要有三種場景,一種給控制器中的方法進行注冊,一種是給整個控制器進行注冊,最后一種是給全局注冊中間件。

  • 1、在控制器中的方法中注冊中間件

這種需求是最為常見,這個例子是給IndexController中的index方法添加中間件。

Route::get('/', ['middleware'=>['App\Http\Middleware\EmailMiddleware'],'uses'=>'IndexController@index']);

  • 2、在整個控制器中注冊中間件

這種需求有的時候也會出現,如果給整個控制器中注冊中間件,那么這個控制器中的所有方法都注冊了該中間件。跟我一起來找到答案!

控制器基類(Controller.php)

首先來看一下控制器基類,可以看到Controller類繼承了BaseController類,而BaseController的路徑是Illuminate\Routing\Controller,然后我們來看看Laravel的源碼。

?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
abstract class Controller extends BaseController
{
  use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
}

BaseController類

從源碼中我們可以看到有一個屬性為middleware,這個middleware屬性就是我們要找的,所以只要在需要注冊的控制器下使用這個屬性即可完成注冊。

protected $middleware = [];

?php
namespace Illuminate\Routing;
use BadMethodCallException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
abstract class Controller
{
  /**
   * The middleware registered on the controller.
   *
   * @var array
   */
  protected $middleware = [];
  /**
   * Register middleware on the controller.
   *
   * @param array|string|\Closure $middleware
   * @param array  $options
   * @return \Illuminate\Routing\ControllerMiddlewareOptions
   */
  public function middleware($middleware, array $options = [])
  {
    foreach ((array) $middleware as $m) {
      $this->middleware[] = [
        'middleware' => $m,
        'options' => $options,
      ];
    }
    return new ControllerMiddlewareOptions($options);
  }
  /**
   * Get the middleware assigned to the controller.
   *
   * @return array
   */
  public function getMiddleware()
  {
    return $this->middleware;
  }
  /**
   * Execute an action on the controller.
   *
   * @param string $method
   * @param array  $parameters
   * @return \Symfony\Component\HttpFoundation\Response
   */
  public function callAction($method, $parameters)
  {
    return call_user_func_array([$this, $method], $parameters);
  }
  /**
   * Handle calls to missing methods on the controller.
   *
   * @param array  $parameters
   * @return mixed
   *
   * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
   */
  public function missingMethod($parameters = [])
  {
    throw new NotFoundHttpException('Controller method not found.');
  }
  /**
   * Handle calls to missing methods on the controller.
   *
   * @param string $method
   * @param array  $parameters
   * @return mixed
   *
   * @throws \BadMethodCallException
   */
  public function __call($method, $parameters)
  {
    throw new BadMethodCallException("Method [{$method}] does not exist.");
  }

給整個控制器注冊中間件

我們選用系統的Authenticate中間件來舉例,這個中間件是用于檢測用戶是否登錄。

注意:中間件的名稱為鍵,值可以是一個空數組

protected $middleware = ['\App\Http\Middleware\Authenticate'=>[]];

  • 3、全局注冊中間件

打開app/Http/Kernel.php,這是一個內核文件,可以看到一個屬性$middleware,我們只需要將我們自定義的中間件的路徑添加到這個$middleware 這個屬性中即可。

此外還有一個$routeMiddleware屬性,使用這個屬性可以根據路由來注冊中間件。
我們的路由有:goods/infogoods/detail兩個路由器
我們可以將$routeMiddleware屬性添加一行

'goods.*' => \App\Http\Middleware\GoodsMiddleware::class,

?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
  /**
   * The application's global HTTP middleware stack.
   *
   * @var array
   */
  protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\VerifyCsrfToken::class,
  ];
  /**
   * The application's route middleware.
   *
   * @var array
   */
  protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
  ];
}

更多關于Laravel相關內容感興趣的讀者可查看本站專題:《Laravel框架入門與進階教程》、《php優秀開發框架總結》、《php面向對象程序設計入門教程》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。

您可能感興趣的文章:
  • laravel利用中間件做防非法登錄和權限控制示例
  • laravel在中間件內生成參數并且傳遞到控制器中的2種姿勢
  • 淺談Laravel中的三種中間件的作用
  • Laravel獲取當前請求的控制器和方法以及中間件的例子
  • Laravel框架控制器的middleware中間件用法分析
  • laravel利用中間件防止未登錄用戶直接訪問后臺的方法
  • Laravel 6 將新增為指定隊列任務設置中間件的功能
  • laravel框架中間件 except 和 only 的用法示例
  • 淺談laravel中間件的創建思路

標簽:巴彥淖爾 麗江 重慶 鷹潭 衡陽 十堰 銅陵 臨沂

巨人網絡通訊聲明:本文標題《Laravel5.1框架注冊中間件的三種場景詳解》,本文關鍵詞  Laravel5.1,框架,注冊,中間件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Laravel5.1框架注冊中間件的三種場景詳解》相關的同類信息!
  • 本頁收集關于Laravel5.1框架注冊中間件的三種場景詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 国产黑色丝袜一区在线| 丁香六月天婷婷| 胸大又放荡的h文古代| 国产aⅴ激情无码久久久无码| 亚洲无矿砖砖区| 欧美成人三级网站| 90分钟床上色大片免费看| 午夜情2在线观看| 国产乱子伦片免费观看中字| 舒淇本人一级毛片视频播放 | 天天摸夜夜躁夜夜无码小视频| 96日本xxxxxxxxx18| 91精品久久久久含羞草| ass欧美极品粉嫩ass| 国产在线拍揄自揄拍无码网站新闻| 国产大量情侣高清视频| 韩漫免费网站成人漫画www| 大陆明星乱婬(高H)| 国产香蕉97碰碰碰视频在线观看 | 亚洲一区欧美一区| 韩国电影风风风| 色成人秘?免费网站| 国产91会所洗浴风流按摩| 真实的伦伦啪啪| 6男一女两根同时进去小说| 8x8Ⅹ8X成人免费视频A片| 欧美一区二区五月综合色欲aV| 欧美一线高本道高清在线 | 国产熟妇毛多???男男| 乱啪导航| 香蕉免费看一区二区三区| 腿间摩擦女婴h| 6996电视影片在线看免费| 国产无遮挡AAA片爽爽| 中文字幕免费在线看电影大全| 浪荡货老子大吗爽死你h视频 | 欧美gay18巨大| 扒开jk美女?狂揉?免费游戏| 2019午夜福利1000集| 快播a**| 33日索情|