Laravel中Sessionid处理机制的详细说明
序
本文主要介绍了Laravel中Sessionid处理机制的相关内容,并分享给大家参考和学习。下面就不多说了。我们来看看详细的介绍。
会话Cookie名称可以在Laravel的配置文件config/session.php中进行设置,比如这个项目中设置的名称是“sns_session”:
/*| - |会话cookie名称| - ||在这里,您可以更改用于按标识标识会话|实例的Cookie名称。每当框架为每个驱动程序创建|新的会话cookie时,都会使用此处指定的名称。|*/Cookie'='sns_session ',我们可以看到,当我们刷新页面查看cookies时,会发现一个名为sns_session的Cookie,这是我们自己定制的名字。
这个sessionid是cookie和会话之间的桥梁,服务器可以判断哪个客户端从这个sessionid请求。
Laravel的Sessionid在每次刷新时都会改变
但是,每次页面刷新时,cookie值都会改变!那么这个服务器如何保持会话呢?因为你的sessionid一直在变。
Laravel加密cookie
让我们在vendor/laravel/framework/src/illuminate/session/store . PHP的保存方法中进行调试,并在这里打印调用栈:
/* * * { @ inheritadoc } */public function save(){ $ this-addbagdata tosession();$ this-ageFlashData();$ this-handler-write($ this-getId(),$ this-prepareformorage(serialize($ this-attributes));$ this-started=false;DD(DEBUG _ back trace(DEBUG _ back trace _ PROVIDE _ OBJECT,5));}每次刷新页面时,Store对象的id属性不会改变,这个属性就是cookie sessionid的值。也就是说,sessionid的值不会每次都改变,但是它会在写入cookie时改变。
vendor/laravel/framework/src/light/cookie/中间件/encryptcookies.php中的加密方法找到了原因。这个中间件对所有cookie值进行加密,它包含在web中间件中。
受保护函数encrypt(Response $ Response){ foreach($ Response-headers-getCookies())as $ cookie){ if($ this-isDisabled($ cookie-getName()){ continue;} $ response-headers-SetCookie($ this-duplicate($ Cookie,$ this-encrypter-encrypt($ Cookie-GetValue()));}返回$ response}而且这种加密的结果每次都不一样,所以sessionid的值每次都会改变,但实际上不会改变。该cookie将在需要时被解密。
Laravel框架的目的可能是防止会话劫持。考虑的比较全面!
其他补充知识
本机PHP设置会话名称
Session_name()函数:
?Php /*将会话名称设置为websiteid */$ previous _ name=session _ name(' websiteid ');echo“以前的会话名是$ previous _ name br/”;函数的作用是:返回当前会话的名称。如果指定了名称参数,session_name()函数将更新会话名称并返回原始会话名称。
当请求开始时,会话名称被重置并存储在session.name配置项中。因此,如果要设置会话名称,需要先调用session_name()函数,然后再为每个请求调用session_start()或session_register()函数。
COOKIE和SESSION的区别和联系
Cookies保存在客户端,而会话保存在服务器端。从安全性的角度来看,会话更安全。Cookies只保存字符串(并且可以自动转换为字符串)。从保存内容的大小来看,cookies保存的内容是有限且相对较小的,而sessions基本没有这个限制。从性能的角度来说,有了SESSION,对服务器的压力会更大。SEEION依赖于cookie,但是如果cookie被禁用,摘要也可以通过URL传递
以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。
版权声明:Laravel中Sessionid处理机制的详细说明是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。