所以我通过ajax调用zend auth clear identity函数,如果ajax返回true(即身份被清除),我只需通过location.reload()重新加载浏览器
通常会发生的事情是该页面包含以下内容:
if ($this->auth->hasIdentity()) {
echo "Welcome";
}
和
if (!$this->auth->hasIdentity()) {
echo "some login form";
}
但是之后由于浏览器缓存了页面....即使我通过ajax(清除身份)调用了注销脚本并重新加载页面,页面仍会显示欢迎屏幕,因为它认为页面没有改变,所以只需显示包含欢迎屏幕的缓存,而不是重新加载时的登录表单......
是否可以手动清除缓存或使用jquery进行某种排序,以便在重新加载时不会只加载缓存?
答案 0 :(得分:0)
我可能错了,但这不是一般的缓存问题吗?告诉浏览器不要缓存该特定页面,问题应该解决。
答案 1 :(得分:0)
我的建议是不要使您的注销功能成为Ajax。只需将其设为常规链接,例如:/ authentication / logout /
该行动应该这样做:
public function logoutAction() {
$auth = Zend_Auth::getInstance();
$auth->clearIdentity();
$this->_redirect('/authentication/login');
}
无论如何,这对我有用。
我知道这可能不是一个理想的答案,但我仍然会质疑注销链接是ajax的必要性。