Session 在Cakephp中,什么是会话->;有效()?

Session 在Cakephp中,什么是会话->;有效()?,session,cakephp,Session,Cakephp,我知道这个方法回答了“当前会话有效吗?”的问题,但我不明白为什么它会无效。我已经阅读了这个方法的源代码,但是我仍然不明白。据我所知,这与会话数据是否已过期有关,但我不确定 这可能与旧版本的Cake有关,因为我在最新的文档中没有看到它,但它在我使用的版本中。如果您销毁它,它将无效。例如,您希望在登录用户注销后清除其所有会话数据。客户端可能会在下一次发送到服务器时尝试使用内存cookie中的会话ID,但服务器已经破坏了该会话 if ($this -> Session -> valid()

我知道这个方法回答了“当前会话有效吗?”的问题,但我不明白为什么它会无效。我已经阅读了这个方法的源代码,但是我仍然不明白。据我所知,这与会话数据是否已过期有关,但我不确定


这可能与旧版本的Cake有关,因为我在最新的文档中没有看到它,但它在我使用的版本中。

如果您销毁它,它将无效。例如,您希望在登录用户注销后清除其所有会话数据。客户端可能会在下一次发送到服务器时尝试使用内存cookie中的会话ID,但服务器已经破坏了该会话

if ($this -> Session -> valid())
{
    $this -> Session -> destroy();
    $this -> redirect('/');
}

另一种情况是,如果服务器上的会话超时和/或客户端试图使用错误/错误的会话ID与服务器同步。

如果在请求之间更改useragent(如果启用了检查)或会话过期,则可能无效。

但如果您破坏会话,服务器不应该告诉浏览器从cookie中清除会话密钥吗?如果浏览器发回一个被破坏的会话密钥,那只会是因为竞争条件,不是吗?