【发布时间】:2015-08-29 05:57:19
【问题描述】:
长话短说:我已经破解了 jasny/sso 来与 Laravel 合作。它工作得非常好,除非主/根会话已过期。
我将主要/根身份验证设置为“记住”,因此它可以在会话过期时从 cookie 重新进行身份验证。
当 SSO 服务器上发生“附加”操作并且主/根会话已过期时,我正在运行 Auth::check() 以使会话恢复活力,以便可以正确附加。
我所有的调试都表明一切都按照我的需要工作,除了这个小细节:
“附加”操作生成的新会话永远不会写入数据库,因为 DatabaseSessionHandler 认为它已经存在。它正在运行 UPDATE 而不是 INSERT。
因此,我的 SSO 客户端会话附加到一个不存在的 SSO 服务器会话。
对于我的一生,我不知道为什么它认为这个新会话已经存在,也不知道如何让它正确插入到数据库中。
谁能告诉我为什么新的 Laravel 4.2 会话会被检测为“存在”并在 save() 上运行 UPDATE 而不是 INSERT?
额外的调试尝试 --
尝试 #1:我已将此跟踪到一个尚未被垃圾回收的过期会话的虚假附件。我不明白的是如何在呈现不同的会话 ID 时加载此会话。如果这是 migrate() 或 regenerate() 方法的结果,“exists”将被设置为 false,它会正确保存。不知何故,似乎会话 ID 正在更新而没有重置“存在”。
尝试#2:答案一直盯着我看。我现在有点理解了反对意见。 (见下面我的回答)
【问题讨论】:
-
不解释就投反对票?优雅的举动。
标签: session laravel laravel-4 single-sign-on