手册:中心ID

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page Manual:Central ID and the translation is 12% complete.
Other languages:
English • ‎中文 • ‎日本語

中心ID(central ID)标识跨wiki用户。 On single-wiki installations it is the same as the user ID; on wiki farms which use some kind of single sign-on, it's probably assigned by the authentication extension. Site admins can configure it by setting $wgCentralIdLookupProvider .

Using a central ID provider

Any code that interacts with data that would benefit from being available cross-wiki (e.g. authentication and authorization details, cross-wiki blocks) should, instead of storing local user IDs, store the central ID and use the CentralIdLookup class to convert between local usernames and central IDs.

Such extensions should also allow their data to be stored centrally. Typically this is done by providing a configuration option for database (wiki ID) and one for cluster, both defaulting to false, and doing something like this to get a database connection:

$lb = \MediaWiki\MediaWikiServices::getInstance()->getDBLoadBalancerFactory()->getExternalLB( $cluster, $wikiId );
$db = $lb->getConnectionRef( DB_MASTER, [], $wikiId );

For an example of code making use of central IDs, see BotPasswords.

Basic examples

Obtaining the default Central ID Lookup provider:

$lookup = CentralIdLookup::factory();

Obtaining the central ID from a local user:

$centralId = $lookup->centralIdFromLocalUser( $user );

Writing a central ID provider

Single sign-on extensions should implement a subclass of CentralIdLookup and register it in $wgCentralIdLookupProviders .

For an example of a single sign-on extension providing central IDs, see CentralAuthIdLookup in Extension:CentralAuth . For a full list of such extensions, see Category:CentralIdLookup providers .