Как определить время ожидания сеанса в Symfony - PullRequest
0 голосов
/ 04 декабря 2009

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

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

Как мне этого добиться?

Ответы [ 2 ]

2 голосов
/ 04 декабря 2009

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

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

1 голос
/ 03 июня 2011

Гораздо проще проверить myUser-> timedout.

http://trac.symfony -project.org / ревизия / 1722

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

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

Время ожидания атрибута заполнено правильно.

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

<?php if($sf_user->getTimedOut()) : ?>
    <div class="error">Session timeout...</div>
<?php endif ?>   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...