PHP laravel系列之中介軟體

2021-08-07 16:27:48 字數 2641 閱讀 2474

下面我們通過乙個簡單的例子來體會一下 midddleware 的工作過程。

思路如下:

1. 建立乙個帶參路由,用來產生乙個請求,並且附帶乙個 age 引數;

2. 建立乙個簡單的中介軟體,用來過濾掉 age > 25 的使用者,來實現乙個簡單的中介軟體過濾;

3. 未通過中介軟體的請求將被重定向到主頁;

4. 通過中介軟體的的請求將達到指定的控制器,實現相應動作。

首先建立帶參路由:

<?php

route::get('/', function

() );

route::get('/young/','usercontroller@young');

根據我們的思路:

• age > 25的路由如 **/young/56 應該被過濾

• age <= 25的路由如 **/young/18 應該被通過

然後建立中介軟體,我們使用 artisan 來建立:

cd ~/code/myweb

php artisan make:middleware youngmiddleware

<?php 

namespace

useclosure;

class

youngmiddleware

}

預設生成的中介軟體**是沒做任何過濾的,也就是說任何請求都會通過。

下面我們加入我們的過濾**:

<?php 

namespace

useclosure;

class

youngmiddleware

return

$next($request);}}

至此,中介軟體建立完成。

中介軟體建立好後,還需要註冊並新增到相應的路由上,才能工作。

註冊中介軟體:

e屬性清

單列表中

。如果你

要指派中

間件給特

定路由,

就要將該

中介軟體的

類加入到

php的

middleware 屬性清單列表中。

這裡注意後面新增部分!!!至此,乙個簡單的中介軟體就完成了!

此時,根據我們之前的思路:

• age > 25 的路由如 **/young/56 應該會被重定向到 『/』

• age <= 25 的路由如 **/young/18 應該會通過中介軟體,到達控制器usercontroller@young

最後,完成控制器部分的**。

使用 artisan 命令建立乙個控制器:

php

artisan

make:controller

usercontroller--

plain

<?php 

class

usercontroller

extends

controller

}

至此,所有的**都完成了,開啟瀏覽器測試一下效果。

訪問 localhost/young/18 成功顯示,如下圖:

訪問 localhost/young/56 重定向到了 『/』 如下圖:

畫面相當美好了!!!

個人總結:

中介軟體用於過濾 首先在原來的控制器、路由是不用修改的,增加過濾只要指向中介軟體就好了,這裡框架裡為了增加可讀性而增加了kernel,可以註冊,也就是給原來中介軟體的位置起乙個別名

形式如下:route::get(『/young/』, 『mycontroller@young』)->middleware(『young』);

中介軟體的書寫方式:

參考:實驗樓

Django之中間鍵

middleware django.middleware.security.securitymiddleware django.contrib.sessions.middleware.sessionmiddleware 會話管理的中間鍵 django.middleware.common.common...

Django之中介軟體

django中的中介軟體 middleware 在django中,中介軟體其實就是乙個類,在請求到來和結束後,django會根據自己的規則在合適的時機執行中介軟體中相應的方法。在django專案的settings模組中,有乙個middleware classes變數,其中每乙個元素就是乙個中介軟體 ...

Django 之 中介軟體

使用裝飾器繞過中介軟體csrf token 從全域性角度改變 django 框架的輸入和輸出 不宜過多 不宜太複雜 middleware 模組名為 mymiddlewares,類名為 md1 mymiddlewares.md1 from django.utils.deprecation import...