當(dāng)laravel獲取不到session的三種解決辦法
說到PHP估計有些朋友還有些熟悉,但是對于PHP下的laravel就表示不知道了。有些人因為需要使用到laravel時,卻發(fā)現(xiàn)過程中出現(xiàn)了問題,那就是session無法獲取了,鼓搗了半天也不...
說到PHP估計有些朋友還有些熟悉,但是對于PHP下的laravel就表示不知道了。有些人因為需要使用到laravel時,卻發(fā)現(xiàn)過程中出現(xiàn)了問題,那就是session無法獲取了,鼓搗了半天也不得其法,讓人氣惱不已。面對這樣的情況我們應(yīng)該怎么辦呢?下面小編就給大家分享一下具體的示例代碼,有需要的朋友可以收藏下來。
問題:引用第三方類庫時,使用全局函數(shù)session()可以保存session,但是獲取不到
1、路由置于 web 中間件下,修改app/Http/Kernel.php文件,如下
protected
$middlewareGroups
= [
//中間件web
'web'
=> [
\App\Http\Middleware\EncryptCookies::
class
,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::
class
,
//看到這里了嗎!StartSession!?。。∫崖酚煞旁谶@個中間件了才會啟動Session?。?/code>
\Illuminate\Session\Middleware\StartSession::
class
,
\Illuminate\View\Middleware\ShareErrorsFromSession::
class
,
\App\Http\Middleware\VerifyCsrfToken::
class
,
],
'api'
=> [
'throttle:60,1'
,
],
];
2、修改路由寫法,如下
//兩種路由中間件寫法各人喜好!
Route::get(
'/'
,
function
() {
//路由放在這里
})->middleware(
'web'
);
Route::group([
'middleware'
=> [
'web'
]],
function
() {
//路由放在這里
});
//routes.php
3、Laravel不用php原生的session,那么在controller之后應(yīng)該做了一些事情,將session寫入到文件中,而不是每次put操作都寫操作,這樣會IO操作太頻繁的,影響性能的。
class
Middleware
implements
HttpKernelInterface
{
...
public
function
handle(Request
$request
,
$type
= HttpKernelInterface::MASTER_REQUEST,
$catch
= true)
{
$this
->checkRequestForArraySessions(
$request
);
if
(
$this
->sessionConfigured()) {
$session
=
$this
->startSession(
$request
);
// 啟動session
$request
->setSession(
$session
);
}
$response
=
$this
->app->handle(
$request
,
$type
,
$catch
);
// 調(diào)用controller的method
if
(
$this
->sessionConfigured()) {
$this
->closeSession(
$session
);
//關(guān)閉session
$this
->addCookieToResponse(
$response
,
$session
);
}
return
$response
;
}
...
protected
function
closeSession(SessionInterface
$session
)
{
$session
->save();
// 保存session
$this
->collectGarbage(
$session
);
}
}
查看調(diào)用相關(guān)的代碼。laravel編譯后,在bootstrap/compiled.php中
可以看見,在調(diào)用完controller之后,調(diào)用了session->save()的方法,來主動的保存session。這樣session才能落地保存起來,如果在controller或者view里面寫了exit;,那么session是不會被保存的,除非主動的寫Session::save()才能手工的保存起來?;蛘甙裠ie();exit();換成return!
以上就是今天給大家分享的關(guān)于laravel無法獲取session了應(yīng)該怎么辦的具體解決教程了,相信大家如果再遇到這個問題就再也不用心煩了,只要按照示例說的來進(jìn)行操作那么就能輕松解決了。
- 在PHP中進(jìn)行curl開啟操作的具體教程
- React如何解決fetch跨域請求時session失效問題
- PHP中間件ICE,ICE的安裝配置,ICE常見編譯和運行(異常)
- win7下手動配置apache+php+mysql記
- Win10系統(tǒng)下怎么禁止同步主機(jī)session
- OneinStack一鍵PHP/JAVA/HHVM安裝及VPS手動安裝LNMP
- PHP遭棄用!Wordpress.com開源并轉(zhuǎn)用Javascript
- 分享6款國內(nèi)、外開源PHP輕論壇CMS程序
- 【php爬蟲】百萬級別知乎用戶數(shù)據(jù)爬取與分析
- FreeHostia免費PHP空間中文面板250MB空間6GB流量
在PHP中進(jìn)行curl開啟操作的具體教程
相信大家對于PHP都并不陌生了,畢竟PHP吸收了C語言、Java里的許多優(yōu)點,作為一款腳本語言還是收到很多程序員朋友的喜愛的。PHP里的curl函數(shù)庫還是非常實用的,今天小編就給大...
React如何解決fetch跨域請求時session失效問題
這篇文章主要給大家介紹了關(guān)于React如何解決fetch跨域請求時session失效問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的...
PHP中間件ICE,ICE的安裝配置,ICE常見編譯和運行(異常)錯誤
ICE(Internet Communications Engine)是Zeroc提供的一款高性能的中間件。使用ICE能使得php(或c++,java,python)與java,c++,.net,python等進(jìn)行交互?;贗CE可以實現(xiàn)電信級的...
win7下手動配置apache+php+mysql記
本來想學(xué)學(xué)php,于是就想搭建web服務(wù)器和sql環(huán)境,結(jié)果浪費掉了不少時間。大致的總結(jié)下,也算是長個記性。使用的安裝包分別是httpd-2.2.22-win32-x86-no_ssl.msi,php-5.2.5-Win32.zip和mysql-installer-communit...
Win10系統(tǒng)下怎么禁止同步主機(jī)session
近來,有些剛剛升級Win10正式版的用戶反映自己的電腦開機(jī)時有個同步主機(jī)session啟動項占用了將近半分鐘,而選擇用360禁止后,下次會出現(xiàn)同步主機(jī)session3,再禁止下次又會出現(xiàn)同步主機(jī)session5這樣的服務(wù)。那么,我們該如...
OneinStack一鍵PHP/JAVA/HHVM安裝及VPS手動安裝LNMP
說起LNMP,多數(shù)人應(yīng)該知道lnmp.org站長開發(fā)的LNMP一鍵安裝包,該腳本虛擬主機(jī)管理、FTP用戶管理、Nginx、MySQL/MariaDB、PHP的升級、常用緩存組件的安裝、重置MySQLroot密...
PHP遭棄用!Wordpress.com開源并轉(zhuǎn)用Javascript
據(jù)外媒消息稱,Wordpress母公司Automattic將完全重寫Wordpress.com網(wǎng)站代碼,并將此項計劃命名為“Calypso”,代碼開源并被托管于Github平臺。此外,最新的wordpress.com放...
分享6款國內(nèi)、外開源PHP輕論壇CMS程序
隨著移動互聯(lián)網(wǎng)對于傳統(tǒng)互聯(lián)網(wǎng)的沖擊,用戶群更加注重信息的及時性和有效性的簡便分享和獲取,傳統(tǒng)的社區(qū)模式經(jīng)過多年的積累沉淀很深,尤其對于新興的社區(qū)用戶群和站長來說...
【php爬蟲】百萬級別知乎用戶數(shù)據(jù)爬取與分析
本程序是抓取知乎的用戶數(shù)據(jù),要能訪問用戶個人頁面,需要用戶登錄后的才能訪問。當(dāng)我們在瀏覽器的頁面中點擊一個用戶頭像鏈接進(jìn)入用戶個人中心頁面的時候,之所以能夠看到...
FreeHostia免費PHP空間中文面板250MB空間6GB流量
FreeHostia這類空間提供中文主機(jī)控制面板,有域名綁定、MysqL管理、在線文件管理器、PHP配置調(diào)整等,特別適合新手朋友們體驗建站,搭建一個屬于個人的博客。...