2009-12-04 2 views
0

В настоящее время я работаю над проектом с фреймворком PHP Symfony. Я настроил защищенные страницы, определил 30 минут для тайм-аута сеанса и установил страницу, на которой пользователь должен перенаправляться, если не прошедший проверку пользователя пытается получить доступ к защищенной странице.Как определить тайм-аут сеанса в Symfony

Я заметил, что пользователь также перенаправляется туда, если пользователь пытается получить доступ к защищенной странице после истечения срока действия пользователя. В этом случае я хотел бы показать сообщение, в основном говорящее, что «ваша сессия истекла. Пожалуйста, заново подключитесь».

Как я мог достичь этого?

ответ

2

Вы можете установить cookie при каждой успешной аутентификации. Затем, если сеанс пуст, но файл cookie присутствует, вы говорите «Session expired».

Другой, уродливый способ, который будет работать даже с отключенными cookie: всегда добавляйте идентификатор сеанса к URL-адресу. Затем, опять же, если он присутствует в URL-адресе, но сеанс пуст, мы находимся в ситуации истечения срока действия.

+0

Я бы предпочел, чтобы реализовать его в качестве фильтра – develop7

1

Значительно проще проверить для myUser-> timedout.

http://trac.symfony-project.org/changeset/1722

Symfony 1.4 не имеет этот метод, но вы можете создать его:

class myUser extends sfBasicSecurityUser 
{ 
    // ... 
    public function getTimedOut() 
    { 
     return $this->timedout; 
    } 
    // ... 
} 

Атрибут timedout правильно заполнен.

Затем проверьте его значение в шаблоне:

<?php if($sf_user->getTimedOut()) : ?> 
    <div class="error">Session timeout...</div> 
<?php endif ?> 
Смежные вопросы