OrangeHRM проблема с автоматическим выходом из системы

У меня проблема с автоматическим выходом из системы при использовании OrangeHRM Symfony 1.2.4

Что я уже пробовал?

  1. Я пытался выделить максимальное время для сессий через php.ini а также .htaccess

  2. Пробовал после комментирования следующего кода файла /symfony/lib/vendor/symfony/lib/user/sfBasicSecurityUser.class.php

    public function initialize(sfEventDispatcher $dispatcher, sfStorage $storage, $options = array())
    {
    // initialize parent
    parent::initialize($dispatcher, $storage, $options);
    
    if (!array_key_exists('timeout', $this->options))
    {
    $this->options['timeout'] = 86400;
    //$this->options['timeout'] = 1800;
    }$this->options['timeout'] = 86400;
    //$this->options['timeout'] = 2 * 24 * 60 * 60;
    
    // force the max lifetime for session garbage collector to be greater than timeout
    /*if (ini_get('session.gc_maxlifetime') < $this->options['timeout'])
    {
    ini_set('session.gc_maxlifetime', $this->options['timeout']);
    }*/
    ini_set('session.gc_maxlifetime', $this->options['timeout']);
    
    // read data from storage
    $this->authenticated = $storage->read(self::AUTH_NAMESPACE);
    $this->credentials   = $storage->read(self::CREDENTIAL_NAMESPACE);
    $this->lastRequest   = $storage->read(self::LAST_REQUEST_NAMESPACE);
    
    if (null === $this->authenticated)
    {
    $this->authenticated = false;
    $this->credentials   = array();
    }
    else
    {
    // Automatic logout logged in user if no request within timeout parameter seconds
    $timeout = $this->options['timeout'];
    if (false !== $timeout && null !== $this->lastRequest && time() - $this->lastRequest >= $timeout)
    {
    if ($this->options['logging'])
    {
    $this->dispatcher->notify(new sfEvent($this, 'application.log', array('Automatic user logout due to timeout')));
    }
    
    $this->setTimedOut();
    $this->setAuthenticated(false);
    }
    }
    
    $this->lastRequest = time();
    

    }

  3. Пытался установить $_SESSION['symfony/user/sfUser/lastRequest'] вручную.

  4. Пытался оставаться активным, отправляя запрос на получение через AJAX,

  5. Пытался увеличить время сеанса с YML установочный файл находится в .../symfony/apps/orangehrm/config/factories.yml

    all:
    routing:
    class: sfPatternRouting
    param:
    generate_shortest_url:            true
    extra_parameters_as_query_string: true
    storage:
    class: sfSessionStorage
    param:
    session_name: PHPSESSID
    session_cache_limiter: nocache
    user:
    class: myUser
    param:
    timeout:         86000
    logging:         %SF_LOGGING_ENABLED%
    use_flash:       true
    default_culture: %SF_DEFAULT_CULTURE%
    

Конечный результат

Все вышеперечисленные приемы провалились.

1

Решение

Во-первых, вы не должны трогать файлы в каталоге продавца!

Правильный способ изменить время жизни сессии в приложении Symfony — через файл config.yml. Смотрите этот вопрос для справки.

0

Другие решения

Хотя это немного поздно, это поможет вам увеличить значение тайм-аута сеанса. Этот параметр расположен в .../symfony/apps/orangehrm/config/factories.yml файл.

Там вы увидите настройки ниже,

all:
routing:
class: ohrmPatternRouting
param:
generate_shortest_url:            true
extra_parameters_as_query_string: true
storage:
class: sfSessionStorage
param:
session_name: PHPSESSID
session_cookie_secure: true
session_cache_limiter: nocache
user:
class: myUser
param:
timeout:         1800 #change this value to change the session timeout interval
logging:         %SF_LOGGING_ENABLED%
use_flash:       true
default_culture: %SF_DEFAULT_CULTURE%

Соответствующее значение, которое вы должны изменить, timeout параметр. Значение по умолчанию составляет 1800 секунд (30 минут). Если вы находитесь в среде разработки, выполните команду symfony clear cache (в терминале перейдите внутрь symfony папка и выполнить ./symfony cc) чтобы это заработало. Надеюсь это поможет!

0

По вопросам рекламы [email protected]