【问题标题】:Cookie based auth Logout not working基于 Cookie 的身份验证注销不起作用
【发布时间】:2012-09-06 19:10:16
【问题描述】:

我正在构建一个基于 cookie 的会话机制,它具有一个抽象类 Session,可以扩展该类以生成多个 cookie 会话实例,以适应不同的用途和复杂性......

我还有一个 Auth 类,它处理权限以及用户的实际登录和注销。 Auth 类需要 Session 类或子类才能运行。

到目前为止,一切都很棒,我可以登录用户,如果经过一定时间、IP 地址不匹配等,也可以将其注销。

每次页面加载都会读取 cookie 检查是否存在不一致,并根据 xyz 销毁或更新它。销毁脚本现在将 cookie 上的时间设置回减号,并删除已从 auth 库中添加的所有用户数据。这很有效,因为我登录后等待了几分钟,然后点击刷新,cookie 变得疲惫不堪,我被弹回登录屏幕。

但是,如果我想通过单击按钮将它们注销,则销毁脚本不起作用,即我可以在顶部回显原始用户数据,然后运行注销脚本,该脚本回显注销并运行所有功能错误等,但如果我得到用户 cookie,它仍然是一样的。我不明白这对于自动检查是如何起作用的,但当用户点击注销按钮时……

下面是我的 sessionDestroy 函数

protected function sessionDestroy($cookieName) {

    setcookie(
                $cookieName,
                addslashes(serialize(array())),
                (time() - 3600),
                0
        );          
}

P.S 我知道破坏对于 cookie 来说是个坏词,但你知道我的意思……希望

【问题讨论】:

    标签: php codeigniter session cookies


    【解决方案1】:

    为什么不使用 CI 内置的 cookie 和会话库?

    关于会话库的优点,它使用了加密的 cookie。你发现它比你做的更好。

    【讨论】:

    • -1 用于建议另一个“完整解决方案”。他想要自定义会话管理。
    • 他仍然可以使用 ci 库,只是他需要照顾的“垃圾”更少。 KISS 是你的朋友。
    • 他在问为什么他的解决方案不起作用。建议为其他事情放弃它不是一个可行的答案。
    • 我正在努力教育他,如果一个框架提供了一个帮助者来让他的工作更容易他应该使用它,它很可能会解决他的问题。
    猜你喜欢
    • 2020-11-30
    • 2017-08-29
    • 2011-04-12
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    相关资源
    最近更新 更多