2016-05-11 10 views
1

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

Что я Пробовал?

  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% 
    

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

Все выше методов не удалось.

ответ

0

Во-первых, вы не должны прикасаться к файлам в каталоге поставщика!

Правильный способ изменения времени жизни сеанса в приложении symfony - через файл config.yml. See this question for reference.

+0

Здравствуйте, спасибо, что ответили. Я попробовал ваше предоставленное решение, но все еще столкнулся с проблемой. – Hassaan

+0

Моя версия symfony '1.2.4' – Hassaan

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

Спасибо за ответ. Я уже пробовал этот, но не смог. Повторите мой ответ. – Hassaan