3

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

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

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

4

1 回答 1

2

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

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

if ( session_id() == '' ) {
    wfSetupSession();
}
于 2012-11-08T19:41:51.833 回答