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 相关文章推荐
PHP冒泡排序算法代码详细解读
Jul 17 PHP
有关PHP性能优化的介绍
Jun 20 PHP
smarty模板判断数组为空的方法
Jun 10 PHP
PHP通过串口实现发送短信
Jul 08 PHP
合格的PHP程序员必备技能
Nov 13 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 PHP
PHP验证码生成原理和实现
Jan 24 PHP
PHP缓冲区用法总结
Feb 14 PHP
Yii模型操作之criteria查找数据库的方法
Jul 15 PHP
关于php支持的协议与封装协议总结(推荐)
Nov 17 PHP
PHP实现简易图形计算器
Aug 28 PHP
基于php解决json_encode中文UNICODE转码问题
Nov 10 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投票程序源码
2007/03/11 PHP
php出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
php中this关键字用法分析
2016/12/07 PHP
[JS]点出统计器
2020/10/11 Javascript
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
2012/02/27 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
详谈JS中实现种子随机数及作用
2016/07/19 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
简单了解node npm cnpm的具体使用方法
2019/02/27 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
解决vue使用vant下拉框van-dropdown-item 绑定title值不变问题
2020/08/05 Javascript
vue+node 实现视频在线播放的实例代码
2020/10/19 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
[00:32]2018DOTA2亚洲邀请赛Newbee出场
2018/04/03 DOTA
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
python处理multipart/form-data的请求方法
2018/12/26 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
python中sklearn的pipeline模块实例详解
2020/05/21 Python
python模块内置属性概念及实例
2021/02/18 Python
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
2014年民政工作总结
2014/11/26 职场文书
催款通知书范文
2015/04/17 职场文书
幽默导游词开场白
2015/05/29 职场文书