我试图了解 MW 1.31.1 的工作原理。我有以下钩子:
$wgHooks['UserLoginComplete'][] = 'onUserLoginComplete';
function onUserLoginComplete(User &$user, &$inject_html, $direct){
$_SESSION['mydata'] = 'some data';
}
当用户成功通过身份验证时,它基本上将一些数据存储在 $_SESSION 中。只要我通过了身份验证,我如何将 $_SESSION['mydata'] 保持在会话中。
令我困惑的是,当我在登录时选中“保持登录状态”并在几个小时后返回 wiki 站点时。我仍然通过系统进行身份验证,但 $_SESSION['mydata'] 消失了。
自 1.27引入SessionManager以来,MediaWiki 进行自己的会话处理。根据它的值,$wgPHPSessionHandling
要么完全忽略 PHP 会话,要么尝试将它们与 MediaWiki 会话同步。改用 MediaWiki 的会话处理方法:
SessionManager::getGlobalSession()->set( 'mydata', 'some data' );
至于从会话中消失的数据,它并不意味着作为一种持久存储机制,长期行为完全取决于为其配置的存储机制 - 检查$wgSessionCacheType
和$wgObjectCacheSessionExpiry
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句