API:限制API使用

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page API:Restricting API usage and the translation is 100% complete.

Other languages:
Deutsch • ‎English • ‎dansk • ‎español • ‎français • ‎polski • ‎русский • ‎ไทย • ‎中文 • ‎日本語 • ‎한국어

此处有几种方式来对用户组用户限制使用(某些)API或完全禁用它。 其中的某些需要修改用户权限

禁用整个API

您可以通过在LocalSettings.php 中设置$wgEnableAPI = false;来完全禁用API。 API默认是启用的。

该配置设置在MediaWiki 1.31.0版本开始弃用,且将在未来版本中被移除。这意味着将无法再禁用API。

禁用写入API

您可以禁用所有写入模块通过在LocalSettings.php中设置$wgEnableWriteAPI = false;。 写入API在MediaWiki 1.14版本时被默认启用,但在更旧版本中默认禁用。

该配置设置在MediaWiki 1.31.0版本开始弃用,且将在未来版本中被移除。这意味着将无法再禁用写入API。

限制访问写入API

您可以通过禁用writeapi权限来拒绝某些组使用写入API的权限。 默认情况下,所有用户组都拥有writeapi权限。 但是,若要使用写入API,需要拥有writeapi权限且$wgEnableWriteAPI = true;

禁用模块

您可以对所有用户单独禁用模块通过在LocalSettings.php添加一行内容。 究竟要添加什么要取决于禁用的模块类型:

  • 对于action=模块,应添加$wgAPIModules ['modulename'] = 'ApiDisabled';
  • 对于prop=模块,应添加$wgAPIPropModules ['modulename'] = 'ApiQueryDisabled';
  • 对于list=模块,应添加$wgAPIListModules ['modulename'] = 'ApiQueryDisabled';
  • 对于meta=模块,应添加$wgAPIMetaModules ['modulename'] = 'ApiQueryDisabled';

示例

禁止任何不是管理员的用户使用action=edit

if ( !in_array( 'sysop', $wgUser->getGroups() ) ) {
	$wgAPIModules['edit'] = 'ApiDisabled';
}

要限制API操作的访问权限,为ApiCheckCanExecute添加下面的钩子:

static function onApiCheckCanExecute( $module, $user, &$message ) {
    $moduleName = $module->getModuleName();
    if (
        $moduleName == 'action' &&
        !in_array( 'group', $user->getGroups() )
    ) {
        $message = 'apierror-action-notallowed';
        return false;
    }
    return true;
}

'action''group''apierror-action-notallowed'替换为适当的值。