日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Laravel中間件的使用詳解

瀏覽:369日期:2022-06-06 17:28:46
目錄
  • 一:創(chuàng)建中間件
  • 二:前置和后置中間件
    • 1:前置中間件
    • 2:后置中間件
  • 三:注冊(cè)中間件
    • 1:注冊(cè)全局中間件
    • 2:為路由分配中間件
    • 3:中間件組
    • 4:排序中間件
    • 5:中間件參數(shù)
    • 6:Terminable 中間件

Laravel 中間件提供了一種方便的機(jī)制來(lái)過濾進(jìn)入應(yīng)用的 HTTP 請(qǐng)求。例如,Laravel 內(nèi)置了一個(gè)中間件來(lái)驗(yàn)證用戶的身份認(rèn)證。如果用戶沒有通過身份認(rèn)證,中間件會(huì)將用戶重定向到登錄界面。但是,如果用戶被認(rèn)證,中間件將允許該請(qǐng)求進(jìn)一步進(jìn)入該應(yīng)用,所有中間件都位于 app/Http/Middleware 目錄下

一:創(chuàng)建中間件

使用 make:middleware 命令來(lái)創(chuàng)建新的中間件

php artisan make:middleware CheckAge  #CheckAge表示的是中間件文件名稱

該命令將會(huì)在 app/Http/Middleware 目錄內(nèi)新建一個(gè) CheckAge 類

在這個(gè)中間件里,我們僅允許提供的參數(shù) id 大于 200 的請(qǐng)求訪問該路由。否則,我們會(huì)將用戶重定向到 home

<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
    /**
     * 處理傳入的請(qǐng)求
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
if ($request->id<= 200) {
    return redirect("home");
}
return $next($request);
    }
}

二:前置和后置中間件

中間件是在請(qǐng)求之前或之后運(yùn)行取決于中間件本身

1:前置中間件

<?php
namespace App\Http\Middleware;
use Closure;
class BeforeMiddleware
{
    public function handle($request, Closure $next)
    {
// 執(zhí)行動(dòng)作
return $next($request);
    }
}

2:后置中間件

<?php
namespace App\Http\Middleware;
use Closure;
class AfterMiddleware
{
    public function handle($request, Closure $next)
    {
$response = $next($request);
// 執(zhí)行動(dòng)作
return $response;
    }
}

三:注冊(cè)中間件

1:注冊(cè)全局中間件

如果你想讓中間件在你應(yīng)用的每個(gè) HTTP 請(qǐng)求期間運(yùn)行,只需在 app/Http/Kernel.php 類中的 $middleware 屬性里列出這個(gè)中間件類

protected $middleware = [
    \App\Http\Middleware\TrustProxies::class,
    \App\Http\Middleware\CheckForMaintenanceMode::class,
    \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
    \App\Http\Middleware\TrimStrings::class,
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];

2:為路由分配中間件

如果想為指定的路由配置中間件,首先應(yīng)該在 app/Http/Kernel.php 文件內(nèi)為該中間件指定一個(gè)鍵。默認(rèn)情況下,Kernel 類的 $routeMiddleware 屬性包含 Laravel 內(nèi)置的中間件條目。要加入自定義的,只需把它附加到列表后并為其分配一個(gè)自定義鍵即可

protected $routeMiddleware = [
    "auth" => \App\Http\Middleware\Authenticate::class,
    "auth.basic" => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    "bindings" => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    "cache.headers" => \Illuminate\Http\Middleware\SetCacheHeaders::class,
    "can" => \Illuminate\Auth\Middleware\Authorize::class,
    "guest" => \App\Http\Middleware\RedirectIfAuthenticated::class,
    "signed" => \Illuminate\Routing\Middleware\ValidateSignature::class,
    "throttle" => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    "verified" => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];

一旦在 Kernel 中定義了中間件,就可使用 middleware 方法將中間件分配給路由

Route::get("admin/profile", function () {
    //
})->middleware("auth");

你還可以為路由分配多個(gè)中間件

Route::get("/", function () {
    //
})->middleware("first", "second");

分配中間件時(shí),你還可以傳遞完整的類名

use App\Http\Middleware\CheckAge;
 
Route::get("admin/profile", function () {
    //
})->middleware(CheckAge::class);

3:中間件組

有時(shí)你可能想用單一的鍵為幾個(gè)中間件分組,使其更容易分配到路由。可以使用 Kernel 類的 $middlewareGroups 屬性來(lái)實(shí)現(xiàn)

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,
    ],
 
    "api" => [
"throttle:60,1",
"bindings",
    ],
];

可以使用與單個(gè)中間件相同的語(yǔ)法將中間件組分配給路由和控制器操作

Route::get("/", function () {
    //
})->middleware("web");
Route::group(["middleware" => ["web"]], function () {
    //
});

4:排序中間件

很少情況下,你可能需要中間件以特定的順序執(zhí)行,但是當(dāng)它們被分配到路由時(shí),你無(wú)法控制它們的順序。在這種情況下,可以使用 app/Http/Kernel.php 文件的 $middlewarePriority 屬性指定中間件優(yōu)先級(jí)

 protected $middlewarePriority = [
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\Authenticate::class,
    \Illuminate\Routing\Middleware\ThrottleRequests::class,
    \Illuminate\Session\Middleware\AuthenticateSession::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,
    \Illuminate\Auth\Middleware\Authorize::class,
];

5:中間件參數(shù)

中間件也可以接受額外的參數(shù)。例如,如果應(yīng)用需要在運(yùn)行特定操作前驗(yàn)證經(jīng)過身份認(rèn)證的用戶是否具備給定的「角色」,你可以新建一個(gè) CheckRole 中間件,由它來(lái)接收「角色」名稱作為附加參數(shù)。

附加的中間件參數(shù)應(yīng)該在 $next 參數(shù)之后被傳遞:

<?php
namespace App\Http\Middleware;
use Closure;
class CheckRole
{
    /**
     * 處理傳入的請(qǐng)求
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string  $role
     * @return mixed
     */
    public function handle($request, Closure $next, $role)
    {
if (! $request->user()->hasRole($role)) {
    // 重定向...
}
return $next($request);
    }
}

定義路由時(shí)通過一個(gè) : 來(lái)隔開中間件名稱和參數(shù)來(lái)指定中間件參數(shù)。多個(gè)參數(shù)就使用逗號(hào)分隔

Route::put("post/{id}", function ($id) {
    //
})->middleware("role:editor");

6:Terminable 中間件

laravel 內(nèi)置的「session」中間件會(huì)在響應(yīng)發(fā)送到瀏覽器之后將會(huì)話數(shù)據(jù)寫入存儲(chǔ)器中。如果你在中間件中定義一個(gè) terminate 方法,則會(huì)在響應(yīng)發(fā)送到瀏覽器后自動(dòng)調(diào)用

<?php
namespace Illuminate\Session\Middleware;
use Closure;
class StartSession
{
    public function handle($request, Closure $next)
    {
return $next($request);
    }
    public function terminate($request, $response)
    {
// Store the session data...
    }
}

terminate 方法應(yīng)該同時(shí)接收和響應(yīng)。一旦定義了這個(gè)中間件,你應(yīng)該將它添加到路由列表或 app/Http/Kernel.php 文件的全局中間件中

在你的中間件上調(diào)用 terminate 調(diào)用時(shí),Laravel 會(huì)從 服務(wù)容器 中解析出一個(gè)新的中間件實(shí)例。如果要在調(diào)用 handle 和 terminate 方法時(shí)使用同一個(gè)中間件實(shí)例,就使用容器的 singleton 方法向容器注冊(cè)中間件

到此這篇關(guān)于Laravel中間件的使用詳解的文章就介紹到這了,更多相關(guān)Laravel中間件內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: PHP
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲日本欧美| 色婷婷精品视频| 国产成人久久| 国产日韩免费| 黄色成人精品网站| 欧美国产美女| 成人综合一区| 久草免费在线视频| 久久久久久亚洲精品美女| 国产精品视频一区二区三区四蜜臂 | 精品久久久网| 国产精品成人国产| 日韩欧美在线精品| 日韩亚洲精品在线观看| 日本高清久久| 久久精品欧洲| 国产99精品一区| 免费在线观看视频一区| 亚洲精品无播放器在线播放| 日韩欧美久久| av资源新版天堂在线| 91精品国产福利在线观看麻豆| 欧美日韩免费观看一区=区三区 | 91超碰国产精品| 免费国产自久久久久三四区久久| 激情婷婷综合| 欧美一区精品| 久久免费视频66| 亚洲手机视频| 国产精品一区二区三区av麻| 国产精品伦理久久久久久| 久久久777| 日韩毛片网站| 午夜欧美巨大性欧美巨大| 亚洲网址在线观看| 久久伊人国产| 亚洲一区二区av| 中文在线资源| 欧美在线精品一区| 欧美激情一区| 免费国产自线拍一欧美视频| 国产黄色精品| 国产亚洲永久域名| 成人精品国产亚洲| 日本aⅴ精品一区二区三区| 99热精品久久| 国产精品福利在线观看播放| 亚欧洲精品视频在线观看| 欧美日韩尤物久久| 国产精品一区二区三区av麻| 视频一区二区三区在线| 最近高清中文在线字幕在线观看1| 一区二区三区四区精品视频| 在线日韩中文| 亚洲午夜免费| 久久av一区| 欧美日韩黑人| 国精品一区二区| 日韩中文影院| 国产成人精品亚洲线观看| 日本色综合中文字幕| 蜜桃av一区二区在线观看| 激情欧美日韩一区| 国产成人精品三级高清久久91| 国产调教精品| 欧美日韩18| 国产伦理一区| 91成人精品在线| 欧美亚洲tv| 石原莉奈在线亚洲三区| 黄色亚洲大片免费在线观看| 香蕉久久精品| 国产精品日本欧美一区二区三区| 欧美日韩中文一区二区| 亚洲91久久| 99在线精品视频在线观看| 国产精品呻吟| 五月国产精品| 国产九九精品| 国产精品成人**免费视频| 国精品产品一区| 91综合网人人| 欧美日韩国产综合网| 视频一区国产视频| 免费观看久久av| 最新亚洲国产| 国产精品久一| 高潮一区二区| 91精品观看| 日韩高清一级| 日韩在线观看| 亚洲天堂日韩在线| 久久av综合| 激情综合在线| 国产精品多人| 久久久久美女| 国产日韩一区| 激情欧美亚洲| 国产欧美日韩精品一区二区免费 | 国产精品丝袜在线播放| 亚洲国产成人二区| 久久午夜影视| 久久亚洲道色| 日本午夜精品久久久| 午夜精品久久久久久久久久蜜桃| 粉嫩av一区二区三区四区五区 | 欧美一区=区| 国产午夜久久av| 国产色综合网| 高清精品久久| 欧美视频精品全部免费观看| 今天的高清视频免费播放成人| 国产免费av国片精品草莓男男| 久久精品国产亚洲夜色av网站| 日本va欧美va瓶| 蜜桃tv一区二区三区| 国际精品欧美精品| 欧美午夜三级| 午夜宅男久久久| 97视频热人人精品免费| 日韩精品五月天| 日韩视频一区| 99久久夜色精品国产亚洲狼| 国产免费av国片精品草莓男男| 中文字幕一区二区三区四区久久| 欧美日韩尤物久久| 在线中文字幕播放| 国产精品主播| 欧美一区自拍| 亚洲欧洲av| 日本不卡一二三区黄网| 亚洲不卡视频| 日本中文字幕视频一区| 亚洲永久精品唐人导航网址| 欧美.日韩.国产.一区.二区 | 99国产精品99久久久久久粉嫩| 日韩电影免费网址| 日本国产精品| 欧美精品一二| 蜜臀久久久久久久| 首页国产欧美久久| 一区二区高清| 日韩福利视频一区| 国产精品一级| 国产精品99久久精品| 日韩中文欧美| 日韩视频一区| 亚洲一区二区动漫| 日韩二区在线观看| 久久久久伊人| 国产高清一区二区| 蜜桃一区二区三区在线观看| 国产精品一区二区三区四区在线观看| 国产精品网址| 99精品视频在线| 综合激情一区| 日本视频在线一区| 97欧美在线视频| 色偷偷偷在线视频播放| 99精品99| 久久精品日韩欧美| 欧美日韩高清| 99日韩精品| 国产精品一区二区美女视频免费看| 最新中文字幕在线播放| 免费久久99精品国产| 精品视频97| 99国产精品久久久久久久| 久久精品国产亚洲aⅴ| 麻豆成人在线| 国产美女高潮在线观看| 色8久久久久| 久久理论电影| 精品国产不卡| 日韩在线麻豆| 黄色不卡一区| 91一区二区| 日韩在线一区二区| 国产精品原创| 国产精品亚洲人成在99www| 国产综合色区在线观看| 日韩激情啪啪| 亚洲香蕉久久| 欧美日韩国产一区精品一区| 免费在线播放第一区高清av| 日韩中文字幕一区二区三区| 欧洲亚洲一区二区三区| 久久中文字幕一区二区三区| 日韩欧美美女在线观看| 视频一区欧美日韩| 91精品亚洲| 亚洲精品88| 青草综合视频| 欧美午夜网站| 日韩高清一级| 日本精品另类| 日韩精品欧美成人高清一区二区| 久久av在线| 日韩三级久久| 国产日韩欧美高清免费|