Jump to content
MediaWiki

API:Ограничение использования

From mediawiki.org
This page is a translated version of the page API:Restricting API usage and the translation is 67% complete.
Outdated translations are marked like this.
Эта страница является частью документации по API действий MediaWiki.
API действий MediaWiki
Основы
Аутентификация
Учётные записи и пользователи
Выполнение операций со страницами
Поиск
Сведения для разработчиков
Руководство
п · о · р

Существует несколько способов ограничить определёнными группами участников использование (определённых частей) API, или даже отключить API вообще. Некоторые из них требуют изменения прав групп участников.

Disabling general access

There is no dedicated user permission for accessing the API. To disable API access for a specific user group, you can disable read permissions for that group. For instance, to disallow anonymous requests,

$wgGroupPermissions['*']['read'] = false;

Note that some API modules may be available regardless. If access is successfully prevented, the API output will usually show the error code 'readapidenied'.

Отключение модулей

Вы можете отключить отдельные модули для всех пользователей, добавив строку в LocalSettings.php. Что конкретно добавить, зависит от типа модуля, который вы хотите отключить:

  • Для модулей action=, используйте $wgAPIModules ['modulename'] = 'ApiDisabled';
  • Для модулей prop=, используйте $wgAPIPropModules ['modulename'] = 'ApiQueryDisabled';
  • Для модулей list=, используйте $wgAPIListModules ['modulename'] = 'ApiQueryDisabled';
  • Для модулей meta=, используйте $wgAPIMetaModules ['modulename'] = 'ApiQueryDisabled';

Примеры

Чтобы запретить всем, кроме администраторов, использование action=edit:

$wgAPIModules['edit'] = 'ApiDisabled';

Чтобы ограничить доступ к действию API, добавьте к ApiCheckCanExecute следующий хук:

static function onApiCheckCanExecute( $module, $user, &$message ) {
 $moduleName = $module->getModuleName();
 $permissionManager = MediaWikiServices::getInstance()->getPermissionManager();
 if (
 $moduleName == 'action' &&
 !$permissionManager->userHasRight( $user, 'right' )
 ) {
 $message = 'apierror-action-notallowed';
 return false;
 }
 return true;
}

Замените 'action', 'right' и 'apierror-action-notallowed' необходимыми для вас значениями.

AltStyle によって変換されたページ (->オリジナル) /