laravel获取不到session的三种解决办法【推荐】


Posted in PHP onSeptember 16, 2018

问题:引用第三方类库时,使用全局函数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操作太频繁的,影响性能的。

查看调用相关的代码。laravel编译后,在bootstrap/compiled.php中

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);
 }
}

可以看见,在调用完controller之后,调用了session->save()的方法,来主动的保存session。这样session才能落地保存起来,如果在controller或者view里面写了exit;,那么session是不会被保存的,除非主动的写Session::save()才能手工的保存起来。或者把die();exit();换成return!

PHP 相关文章推荐
一个用于MySQL的PHP XML类
Oct 09 PHP
PHP制作图型计数器的例子
Oct 09 PHP
PHP封装分页函数实现文本分页和数字分页
Oct 23 PHP
Yii框架获取当前controlle和action对应id的方法
Dec 03 PHP
php输出指定时间以前时间格式的方法
Mar 21 PHP
PHP简单判断字符串是否包含另一个字符串的方法
Mar 25 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
PHP精确计算功能示例
Nov 29 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
PHP将字符串首字母大小写转换的实例
Jan 21 PHP
PHP里的$_GET数组介绍
Mar 22 PHP
PHP中__set()实例用法和基础讲解
Jul 23 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
Sep 16 #PHP
thinkphp5引入公共部分header、footer的方法详解
Sep 14 #PHP
PHP中创建和编辑Excel表格的方法
Sep 13 #PHP
PHP通过get方法获得form表单数据方法总结
Sep 12 #PHP
php获取手机端的号码以及ip地址实例代码
Sep 12 #PHP
详解php用static方法的原因
Sep 12 #PHP
php实现数字补零的方法总结
Sep 12 #PHP
You might like
php addslashes和mysql_real_escape_string
2010/01/24 PHP
如何优雅的使用 laravel 的 validator验证方法
2018/11/11 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
js 异步处理进度条
2010/04/01 Javascript
让jQuery Mobile不显示讨厌loading界面的方法
2014/02/19 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
简易的投票系统以及js刷票思路和方法
2015/04/07 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
详解Angular中的自定义服务Service、Provider以及Factory
2017/04/22 Javascript
详解AngularJS 路由 resolve用法
2017/04/24 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
vue-cli项目使用mock数据的方法(借助express)
2019/04/15 Javascript
Vuex持久化插件(vuex-persistedstate)解决刷新数据消失的问题
2019/04/16 Javascript
一篇文章让你搞懂JavaScript 原型和原型链
2020/11/23 Javascript
python3.6.3+opencv3.3.0实现动态人脸捕获
2018/05/25 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
ipad上运行python的方法步骤
2019/10/12 Python
利用Pytorch实现简单的线性回归算法
2020/01/15 Python
keras自动编码器实现系列之卷积自动编码器操作
2020/07/03 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
简单介绍HTML5中的文件导入
2015/05/08 HTML / CSS
玩具反斗城天猫官方旗舰店:享誉全球的玩具店
2017/10/10 全球购物
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数
2016/04/13 面试题
简历的自荐信
2013/12/19 职场文书
《称象》教学反思
2014/04/25 职场文书
英文升职感谢信
2015/01/23 职场文书
2015年119消防宣传日活动总结
2015/03/24 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
Mysql 如何批量插入数据
2021/04/06 MySQL
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS