laravel框架cookie应用到中间件的理解
生活随笔
收集整理的這篇文章主要介紹了
laravel框架cookie应用到中间件的理解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
昨天博主接到一個委托的需求,大數(shù)據(jù)同事想要在請求日志抓取數(shù)據(jù),希望在我的每個頁面進行cookie的種植,方便他們進行定位分析,我思考了一下,簡單呀,首先考慮的是通過中間件進行cookie種植,但是隨后發(fā)現(xiàn)在現(xiàn)在的項目結(jié)構(gòu)里貿(mào)然增加一個單純的非通用性的中間件,會導(dǎo)致項目的耦合增加于是乎,開始研究項目路由,好在,我的項目里面,所有路由都指向了同一個控制器(框架結(jié)構(gòu)里面還有其他項目),于是乎,開動。 首先,增加了一個cookie種植的私有方法,放到控制器的構(gòu)造函數(shù)里面,這樣就可以實現(xiàn)cookie種植啦,cookie操作直接使用了框架自帶的cookie啦,在app.php里面: 中文官方文檔里面cookie有兩種用法,第一種就是實例化一個response類 ,然后用withCookie()方法去種植: return response($content) ->header('Content-Type', $type) ->cookie('name', 'value', $minutes); 或者 $response = new Response(); $cookie = cookie('name,'value',10);//保存10分鐘 return $response->withCookie($cookie); 但是經(jīng)過百度之后發(fā)現(xiàn)了一個更更加靈活的使用方式: Cookie::queue('name','value',10); 這種方式更加適用于控制器哦 但是這個里這么了博主好幾個小時,網(wǎng)上其他大咖分享的知識,都是在控制器使用之后完美種植,奈何我無論如何都不能實現(xiàn)(response可以實現(xiàn)),郁悶,沉浸下來思考了一下,應(yīng)該是我們項目和標(biāo)準(zhǔn)框架那里有差異,于是各種搜索,琢磨開始了,最后發(fā)現(xiàn)了一個可疑的類:AddQueuedCookiesToResponse,從字面可以看出它的功能,添加隊列cookie到響應(yīng),而且還使用了getQueuedCookies()方法(注:和queue方法同屬于CookieJar類),后來搜索后發(fā)現(xiàn),標(biāo)準(zhǔn)框架里面,該類作為web中間件是被默認(rèn)開啟的,但是被人給注釋掉了,哭~ 好了,cookie種植已經(jīng)解決,但是有個問題需要思考一下,之前一般用的中間件都是在執(zhí)行控制器之前執(zhí)行,為什么這個中間件是在之后執(zhí)行呢? 關(guān)鍵點在于這里: 沒錯,就是$next($request),這里應(yīng)該是把請求轉(zhuǎn)發(fā)到下一個步驟了,也就是控制器,控制器執(zhí)行完畢,返回一個響應(yīng)類,如果需要在控制器執(zhí)行完畢之后處理響應(yīng),就可以對返回的response進行相關(guān)操作了,總結(jié)完畢~
轉(zhuǎn)載于:https://www.cnblogs.com/feiyujinghong/p/7324084.html
總結(jié)
以上是生活随笔為你收集整理的laravel框架cookie应用到中间件的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hibernate -- Dao层 --
- 下一篇: 时间比较