0

所以我通过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 进行某种排序,以便在重新加载时不会只加载缓存?

4

2 回答 2

0

我可能是错的,但一般来说这不是更多的缓存问题吗?告诉浏览器不要缓存该特定页面,问题应该得到解决。

于 2010-11-22T00:30:22.220 回答
0

我的建议是不要让您的注销功能 Ajax。只需将其设为常规链接,例如: /authentication/logout/

该操作应该这样做:

public function logoutAction() {
        $auth = Zend_Auth::getInstance();
        $auth->clearIdentity();
        $this->_redirect('/authentication/login');
}

无论如何,这对我有用。

我知道这可能不是一个理想的答案,但我仍然会挑战注销链接是 ajax 的需求。

于 2010-11-22T07:41:16.237 回答