在Laravel應用全球或組中間件
在Laravel 中,可通過全局中間件和中間件組減少重複代碼。全局中間件適用於所有請求,如設置時區、加載語言包,註冊方式為在app/Http/Kernel.php 的$middleware 數組中添加類名,但應避免耗時操作;中間件組用於按需應用多個中間件到一組路由,如web 和api 組,可自定義組並應用於路由,例如將認證與權限判斷中間件組成admin 組,並通過Route::middleware('admin') 應用;選擇全局中間件用於系統級操作,中間件組用於業務劃分,從而提升項目結構清晰度與可維護性。
在Laravel 中,如果你希望某些中間件對所有路由或一組路由生效,而不是逐個給每個路由添加,可以使用全局中間件或中間件組。這種方式能減少重複代碼,提升可維護性。

全局中間件:適用於所有請求
全局中間件會在每一個請求中都被執行。常見的用途包括啟動時加載語言包、設置默認時區等。

要註冊一個全局中間件:
- 打開
app/Http/Kernel.php
- 在
$middleware
數組中添加你的中間件類名
例如:

protected $middleware = [ \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, \Fruitcake\Cors\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \App\Http\Middleware\LoadLanguage::class, // 新增的全局中間件];
注意:全局中間件會影響所有請求,所以不要放太多耗時操作在裡面,比如數據庫查詢。除非你確實需要它作用於所有請求,否則建議用中間件組更靈活。
中間件組:按需應用於常見路由集合
中間件組適合那些你想一起應用到多個路由的中間件組合。最常見的例子是web
和api
組。
要創建或修改中間件組:
- 打開
app/Http/Kernel.php
- 找到
$middlewareGroups
數組 - 添加或編輯某個組中的中間件列表
例如,如果你想為後台管理頁面統一加上權限驗證中間件:
'admin' => [ \App\Http\Middleware\Authenticate::class, \App\Http\Middleware\CheckAdminRole::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, ],
然後,在定義路由的時候這樣使用:
Route::middleware('admin')->prefix('admin')->group(function () { Route::get('/dashboard', [AdminController::class, 'dashboard']); Route::resource('users', UserController::class); });
這樣做的好處是結構清晰,方便統一管理。同時也能避免把一堆中間件寫在每個路由上,減少出錯和維護成本。
如何選擇全局還是中間件組?
- 用全局中間件:適用於系統級的操作,如基礎安全限制、日誌記錄、初始化配置等。
- 用中間件組:適用於業務場景劃分,比如web 前台、API 接口、後台管理等。
舉個實際例子:
- 你有一個商城項目,前台用戶訪問需要session 支持,後台管理員還需要額外的身份驗證。
- 那麼你可以將
\App\Http\Middleware\EncryptCookies::class
、\Illuminate\Session\Middleware\StartSession::class
等放在web
組裡。 - 後台接口則使用自定義的
admin
組,包含認證權限判斷的中間件。
基本上就這些。合理利用全局和中間件組,可以讓你的Laravel 項目結構更清晰,也更容易擴展和維護。
以上是在Laravel應用全球或組中間件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Stock Market GPT
人工智慧支援投資研究,做出更明智的決策

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

LaraveluseMonologTologMessagesViathelogFacade,withDefaultLogSstoreDinstorage/logs/logaver.log.configurechannelsinconfig/loggpocontrolOlOutput; theDefeftoconTrolOutput; theDefeftStackChannAnneLagateSmultipleHersMultipleHerslikeSlikeSlikesingLikeSingLikeSingle,whatwrile.afile.usel.uselel.uselel.usecy.useleleel.use)

installlaravelsanctumviaCompoSerandPublishItsFiles,thenRunMigrations.2.AddthehasapitokenStraittheUserModel.3.definelogin,logout of lokout of anduserroutesinapi.php

安裝PestviaCompoSerandIlializeItializItinlaravelToseTepting.2.CreateafeAteAteTureTestEstests/farmituretovalifateUser-facingInteractionsLikeHttpRequestSandDatabaseChangaseChangeseChangeseChangesingSusingPestpestpestpestpest的santtax。

AcountrycanaccessallpostSthrouserSerssinghasmanyThrough

toimplementfull-textsearchinlaravel,firstAddafull-textIndexinThththemigration $ table-> fullText(['title','content']); thenusewherewhereflyltext(['title'titter','content'','content',$ query)

toimplementApiAthenticationWithlaravelsanctum,YouneEdtoStepoken的authenticationthatallowsspas,mobileApps,andth-thired-thired-partyservicestoseStoseStoSecerlelyAccessyourapi.sanctumprovidesleightigeslightightightwerightightweightightweightightappablebybybybybybyissugyapitokensthatcanthatcan

Laravel資源控制器通過RESTful路由快速處理CRUD操作,使用Artisan命令生成控制器並註冊資源路由,單行代碼即可創建全部標準路由,支持限制動作、添加中間件及命名,結合路由模型綁定可自動解析參數,提升開發效率並保持代碼結構清晰。

使用DB門面執行原生SQL,根據查詢類型選擇DB::select、DB::insert、DB::update或DB::delete,並用參數綁定防止SQL注入;結構變更可用DB::unprepared;結合DB::raw可在查詢構造器中嵌入原生表達式。
