我创建了一个页面登录,注销以访问控制面板 场景如下:用户登录并访问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');
}
答案 0 :(得分:1)
你总是可以运行一段javascript onLoad,它使用AJAX请求另一个PHP页面,然后如果用户登录,则将它们重定向回CPanel或Login页面,无论他们应该在哪里。
JQuery帖子可以很好地处理这个问题。 http://api.jquery.com/jQuery.post/
答案 1 :(得分:1)
浏览器的行为可能有所不同,您使用的浏览器是什么?
另外,为什么要在注销时检查用户是否有身份?无论用户是否登录,只需清除身份 - 更少的代码,更好......
我的退出代码如下:
$auth = Zend_Auth::getInstance();
$auth->clearIdentity();
$this->_redirect('/identity/login');
答案 2 :(得分:0)
这是我在退出操作中的内容
Zend_Session::destroy();
$this->_helper->redirector('index', 'index');
由于Zend_Auth身份保存在会话中,因此它也会被破坏。如果我做一个回来(从导航器),没有识别被捕获,我被重定向到登录屏幕
答案 3 :(得分:0)
我将使用的方法是强制登录页面在新的窗口实例中进行。当用户注销时,关闭该窗口。没有什么可以回去的。
另一种方法是使用会话并在每次用户移动到新页面时执行POST 。点击后退按钮需要再次发布内容,但会话将关闭,请求将失败。