1

我正在尝试使用SAMLAuth扩展和 SimpleSAMLPHP 将 SAML 身份验证添加到 MediaWiki 安装。身份验证直接从 SimpleSAMLPHP (/authenticate.php?as=mywiki) 工作,但是当我尝试通过 wiki 登录时,我从 SimpleSAMLPHP 得到“状态信息丢失”。

我正在使用内置的 PHP 状态,这会导致 SimpleSAMLPHP 使用状态 ID 写入 cookie 并$_SESSION用于存储。当我查看 指定的目录时session.phpsession.savepath,我可以看到在成功和失败的情况下都创建了正确 ID 的会话文件。在成功的情况下,会话文件将填充序列化的会话数据。但是,在失败的情况下,会话文件是空的。在随后的请求中,会话显然无法加载。

编写会话的代码是:

public function saveSession(SimpleSAML_Session $session) {
        $_SESSION['SimpleSAMLphp_SESSION'] = serialize($session);
}

我可以通过调试日志确认$session在这两种情况下都填充了 的值。

所以我的问题是:什么会导致会话文件被创建但为空,因为我正在写入$_SESSION并且相同的代码在从不同的文件调用时有效?这可能是由于会话未正确初始化或关闭造成的吗?如果在设置之前写入输出,我会期望看到这种行为$_SESSION吗?

4

0 回答 0