云客Drupal源码分析之会话系统Session高级篇

本文深入探讨Drupal的会话系统工作原理与应用方法,包括会话机制、自定义处理器、安全性等方面,为开发者提供详实的技术指导。

以下内容仅是一个预览,完整内容请见文尾:

在本系列初期已经发布过了两篇会话主题,属于初级内容,建议你先了解一下,相比之下本篇更加注重实践,全面讲解了drupal的会话系统运行原理及使用方法,补充了许多重要的知识。

会话session概念:
会话session是客户端和服务器间利用cookie或url以“session_name=session_id”的形式来传递的一个用户凭据,因为HTTP协议的无状态性,所以服务器往往使用它来识别用户身份,只要得到这个凭据任何客户端均可访问它拥有的资源,这如果被盗用则等同于盗用用户账户;在php的会话机制启用时,如果不存在会话id则分配一个,如果存在,那么通过会话id从会话储存系统中取回用户数据并填充到$_SESSION超全局变量中,在默认情况下会话数据储存在文件系统中,也可以存储在数据库中,如何储存取决于采用的会话处理器。

超全局变量$_SESSION的特殊性:
这里需要注意$_SESSION这个变量很特殊,在启用php会话机制时它被自动建立,在没有启动会话机制时只要在代码中任意地方(含局部作用域)声明了它,那么它就以超全局状态存在,这和普通变量。。。

自定义会话处理器:
在drupal中自定义了会话处理器,以实现数据库储存,她使用装饰者模式包装了三层:
处理器的最外层包装:
容器服务id:session

会话id:
会话以“会话名=会话id”来传递,在drupal中真实的会话传递类似如下:
SESS30c25d0f8ffe1bbe9ef7049663638486=FwIiZPyPVQcAvpsvJD_1pVNKj62m2k5w3em19oWi5wg
会话名:
如你所见php中是可。。。

开启关闭会话:
系统在HttpKernel堆栈(见本系列该主题)中启动drupal的会话组件(非php会话),见:
服务id:http_middleware.session
类:\Drupal\Core\StackMiddleware\Session
用户不必自己去开启,。。。。

配置会话:
在站点服务配置文件(如sites\default\services.yml)中的session.storage.options下可以配置会话,键名为php会话配置变量不带“session.”前缀。。。

使用会话系统:
在代码中你不应该自己调用session_start(),也尽可能不要直接访问$_SESSION这个变量,drupal是面向对象的,系统提供包对象让你来存取自己的会话数据,在底层,包中的数据实际上是通过引用方式存储到了$_SESSION变量里,包自身是不存储数据的,只保存着一个引用而已,在用户看。。。

drupal会话和其他系统的兼容:
在将drupal和其他系统集成时需要注意会话是否兼容,这往往是不兼容的,如果在drupal运行之前启动了php会话那么系统会报错,这里也提醒运行drupal需要在php配置中关闭。。。


会话安全:
可以说drupal整个系统安全都基于会话的安全,用户的uid就是直接从会话数据中获取的,以下是一些非常重要的安全提醒:
1、drupal没有限制使。。。

 

 

各位《云客drupal8源码分析》系列的读者:
本系列分享希望帮助大家理解drupal8底层原理,并缩短学习时间,但部分重点内容在博客仅发布前言和目录,这是因为:drupal在国外如此流行但在国内却很小众,一个重要原因应该是中文资料的缺乏,我们是否能够找到一种方式来激发高质量的中文资料出产?此时同是积极推动者的晴空提出能否用付费阅读的方式来鼓励更多教程作者?并建立了一个付费阅读drupal资料的网站,学习者仅需支付很少费用即可查询到最用心的知识注解,避免大量查找资料,可以节省大量学习时间是划算的,作者也能分配精力去开发高质量内容而得到回报,drupal是精品中的精品,超过一半的世界五百强用她做网站,难能可贵,国内普及初期需要一个良好的土壤,普及开后免费内容会越来越多,为了支持国内发展,云客决定将重点内容放在晴空的这个网站上收费阅读,读者只需要微信支付很少费用即可,云客在这里承诺该系列得到的所有订阅费用全部捐献给drupal深圳社区,用以组织活动等等,发展社区需要大家贡献力量,该网站于2017年3月29日上线,请移步:http://nowicode.com/ 阅读本篇完整版

我是云客,【云游天下,做客四方】,联系方式见主页,欢迎转载,但须注明出处

****************************************以下为前言和目录,请移步:http://nowicode.com/ 阅读本篇完整版*******************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值