Laravel 學(xué)習(xí)筆記——路由(中間件與路由組)

原文地址http://insp.top/article/7

上一部分講述了laravel路由的基本用法谒拴,現(xiàn)在我們要了解更多路由上的內(nèi)容尝江。

中間件#

在官方文檔上,這一部分是在路由的后面英上,但我想把它挪到前面來炭序,這樣更為合理。

這是什么呢苍日?

我們知道惭聂,路由是一個過程,分析來自客戶端的請求按照路由規(guī)則分發(fā)至相應(yīng)的處理邏輯相恃。但有種情況辜纲,打個比方:后臺。后臺不是所有人都能訪問的拦耐,我們在正式的處理邏輯前耕腾,需要做一個驗證,比如驗證是否具有權(quán)限或者請求的數(shù)據(jù)是否合法杀糯。

這時候扫俺,路由過程的一部分——中間件就上場了。

上述內(nèi)容來自中文版的laravel5文檔固翰,里面很好的說明了中間件的作用狼纬。在laravel5以前的版本,只有過濾器(路由篩選器)骂际,目的和現(xiàn)在的中間件一樣都是在請求到處理邏輯之間的一個中間過程疗琉,一般用作前置和后置的判斷、驗證。通過中間件我們可以在控制器里專注其本身的邏輯,就好比一個后臺的控制器缔俄,我只需要專注于顯示用戶列表或者文章列表仆抵、去處理添加的文章等等椒涯,而不需要關(guān)注訪問者是否是合法的后臺管理員屡萤,驗證權(quán)限的工作漫仆,應(yīng)該交由中間件夕玩。通過中間件驗證就會正常處理种吸,不通過就會被重定向或者其他操作弃衍。

Laravel默認(rèn)已經(jīng)內(nèi)置了許多中間件,且默認(rèn)開啟坚俗【刀ⅲ可以通過編輯app/Http/Kernel.php來決定是否啟用這些中間件。自己開發(fā)的中間件也是在這里進(jìn)行注冊的哦猖败。

我們在app/Http/Kernel.php文件中的$routeMiddleware數(shù)組注冊了一個獨(dú)立中間件速缆,這一中間件可被單獨(dú)用綁定在一個路由和路由組上。在路由定義的時候可以像這樣:

當(dāng)我們訪問http://yourdomain/admin/profile的時候恩闻,首先會經(jīng)過全局中間件艺糜,然后就是我們在app/Http/Kernel.php的$routeMiddleware數(shù)組中定義的名稱為auth的中間件。

說了這么多關(guān)于如何定義幢尚,那么中間件類里面應(yīng)該是什么樣的呢破停?看過文檔的應(yīng)該知道是這樣的(下面的代碼和文檔里的有些區(qū)別哦):


上面這段代碼是已經(jīng)寫好了的中間件,handle方法里面的內(nèi)容就是中間件實(shí)際的代碼尉剩。

如果在中間件中真慢,通過了你的驗證、或者前置的操作邏輯理茎,記得通過代碼return $next($request)(上述例子中28行)將請求導(dǎo)向下一個中間件黑界,如果后面沒有中間件,就會到的處理邏輯(比如控制器等)皂林。

上述中間件是一個前置操作的中間件朗鸠,什么意思呢?就是在作用在實(shí)際處理邏輯前的中間件式撼,就是一個前置中間件童社。相反求厕,當(dāng)一個實(shí)際處理邏輯運(yùn)行完以后通過的中間件著隆,就是一個后置中間件。

后置中間件結(jié)構(gòu)如下:


我們看得出呀癣,區(qū)別在于多了個$response = $next($request)美浦,返回值也變了。很好理解项栏,$next($request)返回的值是整個請求經(jīng)過無數(shù)具體處理邏輯后產(chǎn)生的最終響應(yīng)浦辨,這個響應(yīng)一般是一堆html代碼(渲染后的視圖),也可能是一個json等等沼沈。我們可以在中間件里面對這個響應(yīng)做最后加工處理流酬,最后返回處理完的結(jié)果币厕。

路由組群#

這一塊官方文檔有著十分詳盡的描述,但是似乎不太容易理解芽腾。先說說適用場景旦装。

同時,利用路由組摊滔,定義子域名變得十分容易:


子域名也可以擁有通配符阴绢,以此實(shí)現(xiàn)更為靈活的結(jié)構(gòu)。比如我希望我的網(wǎng)站每一個用戶都擁有自己的二級域名艰躺,類似于這樣:userA.yourdomain.com呻袭,userB.yourdomain.com。這時候可以這樣寫:

可以通過參數(shù)獲取域名上的通配符匹配的值腺兴。

除這些以外左电,路由組帶來的便利相當(dāng)豐富,在這里基本把路由組存在的意義說完了含长,其他關(guān)于路由組的可以移步至官方文檔了解券腔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拘泞,隨后出現(xiàn)的幾起案子纷纫,更是在濱河造成了極大的恐慌,老刑警劉巖陪腌,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辱魁,死亡現(xiàn)場離奇詭異,居然都是意外死亡诗鸭,警方通過查閱死者的電腦和手機(jī)染簇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來强岸,“玉大人锻弓,你說我怎么就攤上這事◎蚬浚” “怎么了青灼?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長妓盲。 經(jīng)常有香客問我杂拨,道長,這世上最難降的妖魔是什么悯衬? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任弹沽,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘策橘。我一直安慰自己炸渡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布丽已。 她就那樣靜靜地躺著偶摔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪促脉。 梳的紋絲不亂的頭發(fā)上辰斋,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音瘸味,去河邊找鬼宫仗。 笑死,一個胖子當(dāng)著我的面吹牛旁仿,可吹牛的內(nèi)容都是我干的藕夫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼枯冈,長吁一口氣:“原來是場噩夢啊……” “哼毅贮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起尘奏,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤滩褥,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后炫加,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瑰煎,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年俗孝,在試婚紗的時候發(fā)現(xiàn)自己被綠了酒甸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡赋铝,死狀恐怖插勤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情革骨,我是刑警寧澤农尖,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布卤橄,位于F島的核電站臂外,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嚎货。R本人自食惡果不足惜蔫浆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一瓦盛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧挠唆,春花似錦嘱吗、人聲如沸谒麦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耻蛇。三九已至,卻和暖如春延曙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枝缔。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工蚊惯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人趴荸。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓宦焦,卻偏偏與公主長得像顿涣,于是被迫代替她去往敵國和親涛碑。 傳聞我的和親對象是個殘疾皇子孵淘,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容