0

我创建了一个页面登录,注销以访问控制面板场景如下:用户登录并访问 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

4 回答 4

1

您总是可以运行一段 javascript onLoad 来使用 AJAX 请求另一个 PHP 页面,然后如果用户已登录,则将它们重定向回 CPanel 或登录页面,无论它们应该在哪里。

JQuery post 会很好地处理这个问题。 http://api.jquery.com/jQuery.post/

于 2011-03-09T19:39:58.467 回答
1

浏览器的行为可能不同,那么您使用的是什么浏览器?

另外,为什么要在注销时检查用户是否有身份?无论用户是否登录,都只需清除身份 - 代码越少越好......

我的注销代码如下所示:

    $auth = Zend_Auth::getInstance();
    $auth->clearIdentity();
    $this->_redirect('/identity/login');
于 2011-03-10T05:06:46.693 回答
0

这就是我在注销操作中所拥有的

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

由于 Zend_Auth 身份保存在会话中,它也会被销毁。如果我(从导航器)返回,则会发现缺少身份,并将我重定向到登录屏幕

于 2011-03-09T20:40:00.817 回答
0

我将使用的方法是强制登录页面发生在一个新的窗口实例中。当用户注销时,关闭该窗口。将没有什么可回头的。

另一种方法是使用会话并在每次用户移动到新页面时执行 POST。在此处点击后退按钮将需要再次发布内容,但会话将关闭并且请求将失败。

于 2011-03-10T05:16:33.597 回答