Кнопка «Назад» возвращает пользователя на защищенную страницу после выхода из системы - Zend Framework - PullRequest
0 голосов
/ 09 марта 2011

Я создал страницы входа, выхода из системы для доступа к панели управления Сценарий выглядит следующим образом: пользователь входит в систему и получает доступ к странице cpanel, а затем выходит из нее. Проблема: когда вход в систему выполнен, если пользователь нажимает кнопку браузера назад, пользователь возвращается на страницу входа, даже если аутентификация выполнена и сеансы установлены, в то же время, если пользователь выходит из системы и нажимает кнопку назад, он возвращается на страницу панели управления если пользователь обновит страницу, то все будет в порядке, и usr будет перенаправлен на страницу входа, а кнопка возврата не перенаправит ее на cpanel).

Проблема в кеше браузера, я пытался использовать как php header, так и html meta, чтобы предотвратить кэширование страницы, но не смог. Любое решение этого?

Мой код действия для выхода из системы следующий:

public function logoutAction()
      {   
         $auth=Zend_Auth::getInstance();
      //If logged in then move to index
         if(!$auth->hasIdentity()){
           $this->_redirect('admin/account/redirect');

      }
         $auth->clearIdentity();
      $this->_redirect('admin/account/redirect');

   }   

Ответы [ 4 ]

1 голос
/ 10 марта 2011

Браузеры могут вести себя по-разному, так какой браузер вы используете?

Кроме того, зачем проверять, есть ли у пользователя личность при выходе?Просто удалите удостоверение независимо от того, вошел ли пользователь в систему или нет - чем меньше кода, тем лучше ...

Мой код выхода из системы выглядит следующим образом:

    $auth = Zend_Auth::getInstance();
    $auth->clearIdentity();
    $this->_redirect('/identity/login');
1 голос
/ 09 марта 2011

Вы всегда можете запустить фрагмент javascript onLoad, который запрашивает другую страницу PHP, используя AJAX, а затем, если пользователь вошел в систему, затем перенаправить его обратно на страницу CPanel или Login, где бы они ни находились.

JQuery сообщение будет обрабатывать это довольно хорошо.http://api.jquery.com/jQuery.post/

0 голосов
/ 10 марта 2011

Метод, который я бы использовал, заставлял страницу входа проходить в новом окне. Когда пользователь выйдет из системы, закройте это окно. Там не будет ничего, чтобы вернуться.

Альтернативой является использование сеансов и выполнение POST каждый раз, когда пользователь переходит на новую страницу. Нажатие кнопки «Назад» потребует повторной отправки содержимого, но сеанс будет закрыт, и запрос не будет выполнен.

0 голосов
/ 09 марта 2011

Это то, что я имею в своем действии по выходу из системы

Zend_Session::destroy();
$this->_helper->redirector('index', 'index');

И поскольку идентичность Zend_Auth сохраняется в сеансе, она также уничтожается.Если я делаю обратно (из навигатора) отсутствие идентификатора ловится и меня перенаправляют на экран входа

...