当laravel获取不到session的三种解决办法
说到PHP估计有些朋友还有些熟悉,但是对于PHP下的laravel就表示不知道了。有些人因为需要使用到laravel时,却发现过程中出现了问题,那就是session无法获取了,鼓捣了半天也不...
说到PHP估计有些朋友还有些熟悉,但是对于PHP下的laravel就表示不知道了。有些人因为需要使用到laravel时,却发现过程中出现了问题,那就是session无法获取了,鼓捣了半天也不得其法,让人气恼不已。面对这样的情况我们应该怎么办呢?下面小编就给大家分享一下具体的示例代码,有需要的朋友可以收藏下来。
问题:引用第三方类库时,使用全局函数session()可以保存session,但是获取不到
1、路由置于 web 中间件下,修改app/Http/Kernel.php文件,如下
protected
$middlewareGroups
= [
//中间件web
'web'
=> [
\App\Http\Middleware\EncryptCookies::
class
,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::
class
,
//看到这里了吗!StartSession!!!!要把路由放在这个中间件了才会启动Session!!
\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之后应该做了一些事情,将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
);
// 调用controller的method
if
(
$this
->sessionConfigured()) {
$this
->closeSession(
$session
);
//关闭session
$this
->addCookieToResponse(
$response
,
$session
);
}
return
$response
;
}
...
protected
function
closeSession(SessionInterface
$session
)
{
$session
->save();
// 保存session
$this
->collectGarbage(
$session
);
}
}
查看调用相关的代码。laravel编译后,在bootstrap/compiled.php中
可以看见,在调用完controller之后,调用了session->save()的方法,来主动的保存session。这样session才能落地保存起来,如果在controller或者view里面写了exit;,那么session是不会被保存的,除非主动的写Session::save()才能手工的保存起来。或者把die();exit();换成return!
以上就是今天给大家分享的关于laravel无法获取session了应该怎么办的具体解决教程了,相信大家如果再遇到这个问题就再也不用心烦了,只要按照示例说的来进行操作那么就能轻松解决了。
-
在PHP中进行curl开启操作的具体教程
相信大家对于PHP都并不陌生了,毕竟PHP吸收了C语言、Java里的许多优点,作为一款脚本语言还是收到很多程序员朋友的喜爱的。PHP里的curl函数库还是非常实用的,今天小编就给大...
-
React如何解决fetch跨域请求时session失效问题
这篇文章主要给大家介绍了关于React如何解决fetch跨域请求时session失效问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...
-
PHP中间件ICE,ICE的安装配置,ICE常见编译和运行(异常)错误
ICE(Internet Communications Engine)是Zeroc提供的一款高性能的中间件。使用ICE能使得php(或c++,java,python)与java,c++,.net,python等进行交互。基于ICE可以实现电信级的...
-
win7下手动配置apache+php+mysql记
本来想学学php,于是就想搭建web服务器和sql环境,结果浪费掉了不少时间。大致的总结下,也算是长个记性。使用的安装包分别是httpd-2.2.22-win32-x86-no_ssl.msi,php-5.2.5-Win32.zip和mysql-installer-communit...
-
Win10系统下怎么禁止同步主机session
近来,有些刚刚升级Win10正式版的用户反映自己的电脑开机时有个同步主机session启动项占用了将近半分钟,而选择用360禁止后,下次会出现同步主机session3,再禁止下次又会出现同步主机session5这样的服务。那么,我们该如...
-
OneinStack一键PHP/JAVA/HHVM安装及VPS手动安装LNMP
说起LNMP,多数人应该知道lnmp.org站长开发的LNMP一键安装包,该脚本虚拟主机管理、FTP用户管理、Nginx、MySQL/MariaDB、PHP的升级、常用缓存组件的安装、重置MySQLroot密...
-
PHP遭弃用!Wordpress.com开源并转用Javascript
据外媒消息称,Wordpress母公司Automattic将完全重写Wordpress.com网站代码,并将此项计划命名为“Calypso”,代码开源并被托管于Github平台。此外,最新的wordpress.com放...
-
分享6款国内、外开源PHP轻论坛CMS程序
随着移动互联网对于传统互联网的冲击,用户群更加注重信息的及时性和有效性的简便分享和获取,传统的社区模式经过多年的积累沉淀很深,尤其对于新兴的社区用户群和站长来说...
-
【php爬虫】百万级别知乎用户数据爬取与分析
本程序是抓取知乎的用户数据,要能访问用户个人页面,需要用户登录后的才能访问。当我们在浏览器的页面中点击一个用户头像链接进入用户个人中心页面的时候,之所以能够看到...
-
FreeHostia免费PHP空间中文面板250MB空间6GB流量
FreeHostia这类空间提供中文主机控制面板,有域名绑定、MysqL管理、在线文件管理器、PHP配置调整等,特别适合新手朋友们体验建站,搭建一个属于个人的博客。...