脚本宝典收集整理的这篇文章主要介绍了php – 如何销毁Symfony 2中的所有会话,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
在对一些专家进行详细调查和咨询后,我发现破坏会话的想法是不正确的.更好的问题是 – «如何强制所有用户注销».
这个问题不应该从会话角度解决,这是一个非常低级别的机制,而是来自安全组件.即使您删除了所有会话数据,也会通过记住下一个用户请求的cookie来重新创建它.
我将在稍后尝试提出有效的解决方案.
这个问题
我需要实现所谓的应用程序«lockdown»的功能,所以我需要一种方法来记录Symfony 2应用程序中的所有用户(关闭所有活动会话).
理想情况下,该解决方案应与所有可能的save-handlers完全兼容.
看起来SessionHandlerInterface没有提供这样做的方法.
如本文所述
Invalidate the Session Based on its Age
use Symfony\component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; class SessionListener { /** * @VAR \Acme\DemoBundle\Service\SessionInvalidator */ PRotected $sessionInvalidator; function __construct($sessionInvalidator) { $this->sessionInvalidator=$sessionInvalidator; } public function onKernelRequest(GetResponseEvent $event) { if ($event->getRequestTyPE() !== HttpKernelInterface::MASTER_REQUEST) { return; } $session = $event->getRequest()->getSession(); $MetadataBag = $session->getMetadataBag(); $lastUsed = $MetadataBag->getLastUsed(); if ($lastUsed === null) { // the session was created just Now return; } // "last used" is a Unix timestamp if (! $this->sessionInvalidator->checkTimestampIsValid($lastUsed)) $session->invalidate(); } }
和配置:
<service id="amce_security.verify_session_listener" class="Acme\DemoBundle\EventListener\SessionListener"> <argument type="service" id="acme.session_invalidator"/> <tag name="kernel.event_listener" event="kernel.request" priorITy="100" method="onKernelRequest" /> </service>
希望这有帮助
以上是脚本宝典为你收集整理的php – 如何销毁Symfony 2中的所有会话全部内容,希望文章能够帮你解决php – 如何销毁Symfony 2中的所有会话所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。