【问题标题】:cookies and sessions is automatically destroyed after 5 minutscookie 和会话在 5 分钟后自动销毁
【发布时间】:2013-12-19 07:33:08
【问题描述】:

如果用户在我的应用程序中工作超过 5 分钟,我的 cookie 和会话希望被自动销毁。

在模块配置中

'session' => array(
      'cookie_lifetime' => 60, 
      'gc_maxlifetime' => 60,
      'cache_expire' => 60, 
      'remember_me_seconds' => 60,
      'use_cookies' => true, 
      'cookie_httponly' => true,
), 

在我的模块中

 $config = $e->getApplication()->getServiceManager()->get('Configuration'); 
 $sessionConfig = new Session Config(); 
 $sessionConfig->setOptions($con fig['session']); 
 $sessionManager = new SessionManager($sessionConfig); 
 $sessionManager->destroy(); 
 Container::setDefaultManager($sessionManager);

【问题讨论】:

  • 原始源中$con fig 之间是否也有空格?也许这就是问题所在......
  • 不,我已经编写了 $config,
  • 好吧,我建议用正确的代码和新行来更新你的问题(这样我们可以更好地阅读它/理解它更简单)

标签: php session zend-framework cookies


【解决方案1】:

我对 Zend 没有任何经验,但这是我的 10 美元:

我认为你应该先设置变量,然后再销毁它。

所以这段代码:

 $sessionManager = new SessionManager($sessionConfig); 
 $sessionManager->destroy(); 
 Container::setDefaultManager($sessionManager);

然后是:

$sessionManager = new SessionManager($sessionConfig); 
Container::setDefaultManager($sessionManager);
$sessionManager->destroy(); 

【讨论】:

    【解决方案2】:

    模块.php

    public function onBootstrap(\Zend\EventManager\EventInterface $e)
    
        $config = $e->getApplication()
            ->getServiceManager();
            ->get('Configuration');
    
        $sessionConfig = new SessionConfig();
        $sessionConfig->setOptions($config['session']);
        $sessionManager = new SessionManager($sessionConfig, null, null);
        Session::setDefaultManager($sessionManager);
    }
    

    module.config.php

    return array(
         'session' => array(
            'remember_me_seconds' => 2419200,
            'use_cookies' => true,
            'cookie_httponly' => true,
        ),
    );
    

    对于 cookie:

    $expires = time()+60*60*24*30; // 1 month
    $path = '/';
    $usrCookie = new SetCookie('cpkue', $cookieUsrName, $expires, $path);
    

    【讨论】:

      【解决方案3】:

      您是否尝试将 cookie_secure 设置为 FALSE 并可能将时间从 60 秒增加

      'session' =>  array
      (
        'cookie_lifetime'      => 60 * 60 * 24 , 
        'gc_maxlifetime'       => 60 * 60 * 24,
        'cache_expire'         => 60 * 60 * 24, 
        'remember_me_seconds'  => 60 * 60 * 24,
        'use_cookies'          => TRUE, 
        'cookie_secure'        => FALSE,
      ), 
      

      【讨论】:

        猜你喜欢
        • 2014-09-30
        • 2017-06-28
        • 2012-02-15
        • 2015-03-20
        • 1970-01-01
        • 1970-01-01
        • 2015-11-26
        • 2016-03-21
        • 1970-01-01
        相关资源
        最近更新 更多