开发者

symfony2 session lifetime

I had a problem with symfony2 session component. I set 开发者_StackOverflow中文版some data to session through session container like this:

$sess = $this->get( 'session' );
$sess->set( 'some_key', 'some_value' );

But after a little bit of time (about 15-20 minutes) the session got lost.

Can I set session life time parameter? The perfect variant for me would be if I can set certain time of session live period...Can anybody please help?


You can set the session expiration time in your config file under the framework section. Mine looks like this:

config.yml

framework:
  secret:        %secret%
  charset:       UTF-8
  error_handler: null
  csrf_protection:
      enabled: true
  router:        { resource: "%kernel.root_dir%/config/routing.yml" }
  validation:    { enabled: true, annotations: true }
  templating:    { engines: ['twig'] } #assets_version: SomeVersionScheme
  session:
      default_locale: %locale%
      cookie_lifetime: 3600 // was "lifetime" but deprecated
      auto_start:     true

You can change the framework.session.lifetime value to anything you'd like, in seconds (it defaults to 3600, or 1 hour).

Reference here.


In Symfony 2.3 I think the right answer is found in app/config/config.yml:

framework:
    session:
        cookie_lifetime: 7200
        gc_maxlifetime: 3600

GC (garbage collection) will be reset every time the server is hit, meaning if the user is active, he'll have 3600 to continue working. The cookie_lifetime will force the user to log out in its limit. In this example, the user will have one hour to be inactive and will be forced out in 2 hours.


To work comfortably you can set in dev environment a cookie_lifetime to 0, it means the cookie expires when the browser is closed.

File: config_dev.php

  framework:
        session:
            cookie_lifetime: 0
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜