'Reset Symfony session lifetime/timeout on user activity
How do I reset the time of the Symfony session as long as there is activity of the user logged into the application.
in config.yml:
cookie_lifetime: 3600 # 1 hour
in parameters.yml
session_ttl: 3600
I want that after 50 minutes if the user performs an action in the application, the time of the session goes back to 1 hour.
Does anyone know of a solution to do this?
Solution 1:[1]
The session cookie lifetime is to be updated on every request to your application.
A good place to do this is an event listener, I prefere to use subsribers instead of listeners so I will use a subscriber for this example, but a listener may be used too.
Since we want to send a cookie to the browser, we will listen to the kernel.response event.
<?php
namespace App\EventSubscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\KernelEvents;
class RequestSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        // return the subscribed events, their methods and priorities
        return [
            KernelEvents::RESPONSE => [
                ['refreshSessionCookie', 0],
            ],
        ];
    }
    public function refreshSessionCookie(ResponseEvent $event)
    {
        $session = $event->getRequest()->getSession();
        if ($session->isStarted()) {
            $response = $event->getResponse();
            $lifetime = 3600;
            $cookie = new Cookie($session->getName(), $session->getId(), time() + $lifetime);
            $response->headers->setCookie($cookie);
        }
    }
}
You may also need to set the gc_maxlifetime to make sure that the session file isn't deleted on the server side, and lost a user session even if the cookie is alive, in framework.yaml:
framework:
    session:
        gc_maxlifetime: 86400 # 1 day
Solution 2:[2]
in config.yml : 
framework:
//
  session:
      //
      cookie_lifetime: 3600 // was "lifetime" but deprecated
      //
you can change this value ..
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | |
| Solution 2 | Haythem Mrad | 
