暂停和恢复Mediawiki编辑会话

时间:2012-11-05 22:00:08

标签: session cookies mediawiki edit

是否可以暂停和恢复Mediawiki编辑?

为了解释,我写了一个访问外部数据库的MW扩展;此数据库需要OAuth身份验证,这是一个三步过程,需要将用户重定向到外部站点以允许对外部数据库的扩展访问。如果MW扩展已经有extDb的访问令牌,那么一切都很好。但是,如果没有令牌,则存在问题。这是标记扩展,通过在Wiki页面中查找某个XML标记来触发,该标记通常出现在编辑的“预览”或“提交”中,例如, http://server.com/wiki/index.php?title=Bibliography&action=submit(解析器挂钩为ParserFirstCallInit)。由OAuth代码构建的回调网址会返回您正在编辑的页面,但处于编辑前状态:即您丢失了所有编辑内容。

如何恢复编辑而不会丢失编辑数据?

1 个答案:

答案 0 :(得分:2)

您可以使用$_SESSION中的数据存储。 MediaWiki本身使用它来存储用户身份验证数据,因此它应该与MediaWiki自己的会话处理很好地集成。

请注意,默认情况下,MediaWiki不会为匿名用户创建会话,除非他们尝试登录或执行需要会话的其他操作。如果您的外部身份验证代码仅供登录用户使用,这应该不是问题,但为了安全起见,您可能需要确保在尝试使用会话之前设置会话:

if ( session_id() == '' ) {
    wfSetupSession();
}