昨天博主接到一个委托的需求,大数据同事想要在请求日志抓取数据,希望在我的每个页面进行cookie的种植,方便他们进行定位分析,我思考了一下,简单呀,首先考虑的是通过中间件进行cookie种植,但是随后发现在现在的项目结构里贸然增加一个单纯的非通用性的中间件,会导致项目的耦合增加于是乎,开始研究项目路由,好在,我的项目里面,所有路由都指向了同一个控制器(框架结构里面还有其他项目),于是乎,开动。
首先,增加了一个cookie种植的私有方法,放到控制器的构造函数里面,这样就可以实现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);
 
但是经过百度之后发现了一个更更加灵活的使用方式:
Cookie::queue('name','value',10);
这种方式更加适用于控制器哦
但是这个里这么了博主好几个小时,网上其他大咖分享的知识,都是在控制器使用之后完美种植,奈何我无论如何都不能实现(response可以实现),郁闷,沉浸下来思考了一下,应该是我们项目和标准框架那里有差异,于是各种搜索,琢磨开始了,最后发现了一个可疑的类:AddQueuedCookiesToResponse,从字面可以看出它的功能,添加队列cookie到响应,而且还使用了getQueuedCookies()方法(注:和queue方法同属于CookieJar类),后来搜索后发现,标准框架里面,该类作为web中间件是被默认开启的,但是被人给注释掉了,哭~
好了,cookie种植已经解决,但是有个问题需要思考一下,之前一般用的中间件都是在执行控制器之前执行,为什么这个中间件是在之后执行呢?
关键点在于这里:
没错,就是$next($request),这里应该是把请求转发到下一个步骤了,也就是控制器,控制器执行完毕,返回一个响应类,如果需要在控制器执行完毕之后处理响应,就可以对返回的response进行相关操作了,总结完毕~

laravel框架cookie应用到中间件的理解的更多相关文章

  1. 装饰器模式以及Laravel框架下的中间件应用

    Laravel框架的中间件使用:从请求进来到响应返回,经过中间件的层层包装,这种场景很适合用到一种设计模式---装饰器模式. 装饰器模式的作用,多种外界因素改变对象的行为.使用继承的方式改变行为不太被 ...

  2. 关于laravel框架的跨域请求/jsonp请求的理解

    最近刚接触laravel框架,首先要写一个跨域的单点登录.被跨域的问题卡了两三天,主要是因为对跨域这快不了解,就在刚才有点茅塞顿开的感觉,我做一下大概整理,主要给一些刚接触摸不着头脑的看,哪里写得不对 ...

  3. laravel框架的中间件middleware的详解

    本篇文章给大家带来的内容是关于laravel框架的中间件middleware的详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. laravel中间件是个非常方便的东西,能将一些逻辑 ...

  4. 关于Laravel框架

    第1讲-Laravel介绍 1.1 什么是Laravel laravel是目前一个比较主流的框架,现在很多互联网的公司都在使用该框架.该框架的前身是symfony框架 Laravel的定位就是做一个简 ...

  5. laravel框架基础知识总结

    一.laravel简介 laravel是一套优雅简介的PHP开发框架,受欢迎程度非常之高,功能强大,工具齐全:以下是本人在学习过程中记录的laravel比较基础的资料,权当学习笔记,请大神们多多指教 ...

  6. laravel框架学习笔记

    一.laravel的安装 1.composer 作用:主要管理php中的依赖关系(类似于yum源) 可以安装的软件: curl    //主要用到微信开发中 upload //文本操作 excel / ...

  7. 关于Laravel框架中Guard的底层实现

    1. 什么是Guard 在Laravel/Lumen框架中,用户的登录/注册的认证基本都已经封装好了,开箱即用.而登录/注册认证的核心就是: 用户的注册信息存入数据库(登记) 从数据库中读取数据和用户 ...

  8. [php]laravel框架容器管理的一些要点

    本文面向php语言的laravel框架的用户,介绍一些laravel框架里面容器管理方面的使用要点.文章很长,但是内容应该很有用,希望有需要的朋友能看到.php经验有限,不到位的地方,欢迎帮忙指正. ...

  9. php的laravel框架快速集成微信登录

    最终的解决方案是:https://github.com/liuyunzhuge/php_weixin_provider,详细的介绍请往下阅读. 本文面向的是php语言laravel框架的用户,介绍的是 ...

随机推荐

  1. 如果导入的项目只有源码,可以将其他项目中的.classpath 和 .project复制到根目录下即可。

    如果导入的项目只有源码,没有对应的项目配置如web项目,可以将其他项目中的.classpath 和 .project复制到根目录下即可.

  2. JAVA上传与下载

    java下载指定地址的文件 package com.test; import java.io.FileNotFoundException; import java.io.FileOutputStrea ...

  3. WCF学习——构建第二个WCF应用程序(六)

    一.创建客户端应用程序 若要创建客户端应用程序,你将另外添加一个项目,添加对该项目的服务引用,配置数据源,并创建一个用户界面以显示服务中的数据.若要创建客户端应用程序,你将另外添加一个项目,添加对该项 ...

  4. 如何在家自制LED灯?很简单,我来告诉你!

    首先LED分凸头.平头和凹头,当中的凹头是没无方向性. 做示宽灯这类晚间才运用的光源,用凹头就好,它没无方向性,可将整个反光碗照亮. 做转向灯等指示性的光源用,准绳上应该用凸头的,它是个聚光镜,投映的 ...

  5. redis内存消耗详解

    Redis所有的数据都存在内存中,相对于廉价的硬盘,内存资源还是比较昂贵的,因此如何高效利用redis内存变得非常重要. 内存消耗分析 管理内存的原理和方法 内存优化技巧 一.内存消耗 理解redis ...

  6. mysql启动关闭的批处理,感觉很好用在其他论坛帖子上找到的,感谢分享

    最近用mysql的时间比较多,每次都在计算机管理工具下面去启动,感觉很麻烦,于是搜索了下果然有前辈已经做出了这些东西,今天收藏整理,mysql启动关闭的批处理感觉很好用在其他论坛帖子上找到的,感谢互联 ...

  7. 安装GPU版本的tensorflow填过的那些坑!---CUDA说再见!

    那些坑,那些说不出的痛! --------回首安装的过程,真的是填了一个坑又出现了一坑的感觉.记录下了算是自己的笔记也能给需要的人提供一点帮助. 1 写在前面的话 其实在装GPU版本的tensorfl ...

  8. SpringMvc多视图配置(jsp、velocity、freemarker) velocity在springmvc.xml配置VelocityViewResolver,VelocityConfigurer,FreeMarkerConfigurer,FreeMarkerViewResolver

    ?xml version="1.0"encoding="UTF-8"?> <beans xmlns="http://www.springf ...

  9. 总结下Redux

    Redux 和 React 没有直接关系,它瞄准的目标是应用状态管理. 核心概念是 Map/Reduce 中的 Reduce.且 Reducer 的执行是同步,产生的 State 是 Immutabl ...

  10. ansible的安装

    安装 ansible-server的安装 client需要有python2.5以上 的python server和client都关闭了selinux server端: 网址: http://www.a ...