国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[教程] 大白話 Laravel 中間件

ThinkSNS / 3242人閱讀

摘要:它包含三個主要的中間件組和應(yīng)用程序的全局中間件。這些中間件在應(yīng)用程序的每個請求期間運行。使得可以在組中注冊中間件,從而更容易通過使用組名將大量中間件附加到路由。典型示例是將每個用戶分配給角色,中間件檢查用戶的角色以確定是否有權(quán)訪問所請求的。

文章轉(zhuǎn)自:https://learnku.com/laravel/t... 
Laravel 中間件是什么?

簡而言之,中間件在 laravel 中的作用就是過濾 HTTP 請求,根據(jù)不同的請求來執(zhí)行不同的邏輯操作。

我們可以通過中間件實現(xiàn)以下功能:

指定某些路由

設(shè)置 HTTP 響應(yīng)頭

記錄請求

過濾請求的參數(shù)

決定是否啟用站點維護模式

響應(yīng)前后做一些必要的操作

自定義中間件

命令行執(zhí)行下面的簡單命令,就可以輕松創(chuàng)建一個新的中間件

php artisan make:middleware 
//MiddlewareName 就是你要創(chuàng)建的中間件的名字

執(zhí)行上面的命令,Laravel 會在 app/Http/Middleware 目錄下自動創(chuàng)建一個只包含 handle 方法的中間件。


在中間件被調(diào)用的時候,handle 方法就會執(zhí)行。這里需要注意的是 handle 方法默認有兩個參數(shù) ?$request?和?$next?。?$request 用來接受應(yīng)用的請求組求,?$next 將請求傳遞給應(yīng)用程序。這兩個參數(shù)是 handle 必不可少的!中間件也包括前置中間件和后置中間件。

“前置中間件” 顧名思義在將請求轉(zhuǎn)發(fā)到應(yīng)用程序之前處理一些邏輯。 另一方面,在中間件之后,在應(yīng)用程序處理了請求并生成響應(yīng)之后運行。

前置中間件:


后置中間件:


中間件的類別

全局中間件

路由中間件

全局中間件針對命中應(yīng)用程序的每個請求運行。 Laravel 自帶了大多數(shù)這些中間件例如?ValidatePostSize,?TrimStrings,CheckForMaintenanceMode?等等.

路由中間件僅在它們所連接的路由上運行
例如 ?redirectIfAuthenticated.

注冊中間件

創(chuàng)建的任何中間件都必須注冊,因為這是 Laravel 知道存在的唯一方式。 要注冊中間件,只需打開名為 kernel.php 的文件,該文件位于 Http 文件夾中,如下所示:

This file contains list of all registered middlewares that come with Laravel by default. it contains three major arrays which
此文件包含默認 Laravel 提供的所有已注冊中間件的列表。 它包含三個主要的中間件組?$middleware?,?$middlewareGroups?和?$routeMiddleware

 [
            AppHttpMiddlewareEncryptCookies::class,
            IlluminateCookieMiddlewareAddQueuedCookiesToResponse::class,
            IlluminateSessionMiddlewareStartSession::class,
            // IlluminateSessionMiddlewareAuthenticateSession::class,
            IlluminateViewMiddlewareShareErrorsFromSession::class,
            AppHttpMiddlewareVerifyCsrfToken::class,
            IlluminateRoutingMiddlewareSubstituteBindings::class,
        ],
        "api" => [
            "throttle:60,1",
            "bindings",
        ],
    ];
    /**
     * 應(yīng)用程序的路由中間件.
     *
     * 可以將這些中間件分配給組或多帶帶使用。
     *
     * @var array
     */
    protected $routeMiddleware = [
        "auth" => IlluminateAuthMiddlewareAuthenticate::class,
        "auth.basic" => IlluminateAuthMiddlewareAuthenticateWithBasicAuth::class,
        "bindings" => IlluminateRoutingMiddlewareSubstituteBindings::class,
        "can" => IlluminateAuthMiddlewareAuthorize::class,
        "guest" => AppHttpMiddlewareRedirectIfAuthenticated::class,
        "throttle" => IlluminateRoutingMiddlewareThrottleRequests::class,
        //the just created middlware
        "superadmin" => AppHttpMiddlewareRedirectIfSuperAdmin::class, 
    ];
}

?$middleware?數(shù)組包含全局中間件,它運行應(yīng)用程序的每個HTTP請求,所以如果你想為每個請求運行一個中間件,你應(yīng)該在這里注冊它。 ?$middlewareGroups 使得可以在組中注冊中間件,從而更容易通過使用組名將大量中間件附加到路由。 $routeMiddleware 數(shù)組包含各個注冊的路由中間件。

分配中間件

有兩個主要方法可以把注冊好的中間件應(yīng)用到路由中。

通過控制器的構(gòu)造方法

通過路由

通過構(gòu)造方法分配中間件

通過構(gòu)造方法分配中間有很大的靈活性,它提供了兩個重要的方法except($parameters)?和?only($parameters),這兩個方法可以允許或阻止中間件應(yīng)用到控制器中的輔助方法。不使用這兩個方法,中間件將使用與控制器的每個方法。

middleware("auth");
    }

    public function viewForum(){

      return view("index");
    }

    public function edit($id){

    }

    public function delete($id){

    }

}

使用?except?和?only?方法我們可以選擇把中間件應(yīng)用到指定方法。

middleware("auth")->except(["viewForums", "viewForumDetails"]);
    }

    public function viewForums(){

      return view("index");
    }

    public function edit($id){

    }

    public function delete($id){

    }

    public function viewForumDetails(){

    }
}
通過路由分配中間件

如果注冊的中間件可以直接附加到路由,如下所示:

middleware("auth");

/**方法 2
或者像這樣使用完全限定的類名:
*/
use AppHttpMiddlewareCheckAge;

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

//方法 3
Route::group(["middleware" => ["web"]], function () {
    //action
});

N:B 中間件組可以像單個中間件一樣分配給路由

中間件參數(shù)

其他參數(shù)可以傳遞給中間件。 典型示例是將每個用戶ID分配給角色,中間件檢查用戶的角色以確定是否有權(quán)訪問所請求的 URI。 參數(shù)可以傳遞給中間件,如下所示:

middleware("auth:"); // 這里應(yīng)該被用戶想要傳遞的任何參數(shù)替換。

//方法2 (Through a controller)
use IlluminateHttpRequest;

class ForumController extends Controller
{

    public function __construct(){
        $this->middleware("auth:");
    }
  }

通過用逗號分隔每個參數(shù),可以將多個參數(shù)傳遞給中間件。

middleware("auth:,,"); //, ,  這里應(yīng)該被用戶想要傳遞的任何參數(shù)替換。

這些參數(shù)在 $next 變量之后傳遞給中間件的 handle 函數(shù)


總結(jié)

要創(chuàng)建中間件,請執(zhí)行以下過程

使用 artisan 命令創(chuàng)建中間件?php artisan make:middleware 中間件名.

在app→Http文件夾中的 kernel.php 中注冊中間件

在創(chuàng)建的中間件中編寫邏輯

將中間件分配給路由或控制器

Conclusion

Laravel中間件可以更輕松地保護我們的路由,過濾輸入并完成許多其他工作,而無需編寫如此多的邏輯。 查看官方 Laravel 文檔?這里?了解中間件的更多功能,最重要的是練習(xí)。

文章轉(zhuǎn)自:https://learnku.com/laravel/t... 

更多文章:https://learnku.com/laravel/c...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/31252.html

相關(guān)文章

  • Laravel 5.4 入門系列 13. 終篇: 小白也能看懂的 Laravel 核心概念講解

    摘要:但是服務(wù)通常由服務(wù)提供者來管理的。小結(jié)通過上述的例子,基本上可以理解服務(wù)容器和服務(wù)提供者的使用。懂得了服務(wù)容器和服務(wù)提供者,理解門面也就不難了。 自動依賴注入 什么是依賴注入,用大白話將通過類型提示的方式向函數(shù)傳遞參數(shù)。 實例 1 首先,定義一個類: /routes/web.php class Bar {} 假如我們在其他地方要使用到 Bar 提供的功能(服務(wù)),怎么辦,直接傳入?yún)?shù)即...

    BenCHou 評論0 收藏0
  • Laravel 深入核心系列教程

    摘要:前言年底了不太忙,最近一段時間也一直在研究,就想寫篇關(guān)于比較深一點的教程系列啥的,于是就找到站長給開了寫教程的渠道。優(yōu)點的就是為藝術(shù)家創(chuàng)造的框架,它也是工程化的趨勢。項目維護方便也是事實。如果有遇到問題可以直接在教程下面留言。 前言 年底了不太忙,最近一段時間也一直在研究laravel,就想寫篇關(guān)于laravel比較深一點的教程系列啥的,于是就找到站長給開了寫教程的渠道。由于第一次寫,...

    wemall 評論0 收藏0
  • windows下laravel5.5手寫教程2路由Eloquent ORM操作(適合初學(xué)者)

    摘要:一路由目錄眾所周知,對于我們熟知的任何一款框架,例如路由系統(tǒng)都是極其重要的存在。文件用于定義界面的路由。定義在中的路由都是無狀態(tài)的,并且被分配了中間件組。生成的控制器為每個行為保留了方法,同時還包括了處理動作和的聲明注釋。 一、路由目錄 眾所周知,對于我們熟知的任何一款PHP框架,例如TP、CI、YII、路由系統(tǒng)都是極其重要的存在。 對于laravel框架也一樣,對于數(shù)據(jù)庫的操作,無非...

    BlackFlagBin 評論0 收藏0
  • 個人整理, 閱讀過的好文章 (每天隨時更新)

    摘要:大家有好的文章可以在評論下面分享出來共同進步本文鏈接數(shù)組使用之道程序員進階學(xué)習(xí)書籍參考指南教你在不使用框架的情況下也能寫出現(xiàn)代化代碼巧用數(shù)組函數(shù)框架中間件實現(xiàn)沒錯,這就是面向?qū)ο缶幊淘O(shè)計模式需要遵循的個基本原則令人困惑的在中使用協(xié)程實現(xiàn)多任 大家有好的文章,可以在評論下面分享出來, 共同進步! 本文github鏈接 php PHP 數(shù)組使用之道 PHP程序員進階學(xué)習(xí)書籍參考指南 教你...

    Chiclaim 評論0 收藏0
  • laravel框架應(yīng)用和composer擴展包開發(fā)

    摘要:官方地址是目前最流行的框架,發(fā)展勢頭迅猛,應(yīng)用非常廣泛,有豐富的擴展包可以應(yīng)付你能想到的各種應(yīng)用場景,框架思想前衛(wèi),跟隨時代潮流,提倡優(yōu)雅代碼,自稱為工匠,其中的模板引擎容器以及擴展包為業(yè)務(wù)的開發(fā)提供了極大的便利。 laravel5.5+ laravel官方地址 laravel是目前最流行的php框架,發(fā)展勢頭迅猛,應(yīng)用非常廣泛,有豐富的擴展包可以應(yīng)付你能想到的各種應(yīng)用場景,lara...

    shevy 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<