注销后 Cookie 会话不会失效

Posted

技术标签:

【中文标题】注销后 Cookie 会话不会失效【英文标题】:Cookie session is not invalidated after logout 【发布时间】:2021-03-14 12:24:33 【问题描述】:

我的 Web 应用程序是使用具有登录和注销功能的 codeigniter 2 构建的。但我不能在用户注销系统后使会话 cookie 无效。我的意思是,当用户注销时,他可以重用他或她以前的会话 cookie 来访问仪表板。看起来 cookie 仅在客户端浏览器上清除,但在服务器端仍然有效。 这是我的注销功能...

function logout()
    $user = new User($this->session->userdata('uid'));
    $user->last_active = (time());
    //$user->last_login = date_convert(time(),true);
    $user->login_status = 0;
    if($user->id) $user->save();

    $log = new UserLogger();
    $log->ulog($this->session->userdata('uid'),'Logout',"User Successfully Logged out of System",0,0,0);
    $this->session->set_userdata('form_token',false);
    $this->session->sess_destroy();
    $this->SystemCore->clearUserSession();
    $this->index();

【问题讨论】:

请阅读How to Ask。我们不希望在此处显示代码图像,所有与您的问题相关的代码 (minimal reproducible example) 都以文本形式直接属于您的问题,并且格式正确。 谢谢..这是我第一次询问堆栈溢出问题 【参考方案1】:

对我有用的是销毁所有会话 cookie

session_start();
session_destroy();
$home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['php_SELF']) .'/index.php';
header('Location: ' . $home_url);

Logout PHP Script

【讨论】:

以上是关于注销后 Cookie 会话不会失效的主要内容,如果未能解决你的问题,请参考以下文章

Keycloak node.js 适配器不会在注销时使 connect.sid 会话 cookie 无效

会话 Cookie,自动注销

会话超时后失效

在从 php 会话注销期间取消设置 cookie 有啥意义?

浏览历史记录清除网页后注销[重复]

Spring Security 注销会话未失效