1

管理する必要がある数千人のユーザーを持つ wiki ファミリがあります。プログラムを離れたユーザーを無効にするエレガントな方法はありません。過去にパスワードを変更することはできましたが、これは将来の永続的な解決策ではありません。ユーザー アカウントを無効にする方法をいくつか調べましたが、どのオプションを選択すればよいかわかりません。

  1. CentralAuth拡張機能 - これはウィキ ファミリーの設定がかなり複雑で、ウィキペディアのコア開発と密接に結びついています。ユーザーをcentralauthグローバルユーザーテーブルに移行するところまで行きました。この設定では、私たちが頻繁に使用するテーブル プレフィックスは考慮されていません。このため、拡張機能に関連付けられた特別なページはすべて壊れています。

  2. IP ブロッキング - ワーク ステーションやコンピューター ラボで、複数のユーザーが同じ IP から wiki にアクセスする可能性があるため、これは使用できません。

  3. ログイン時のフック - ユーザーがログインするときにフック (UserLoginComplete) を使用し、データベースに設定されたフラグに基づいてすぐにログアウトする可能性があります。

  4. 共有アクセス許可 - グローバル アクセス許可を許可するいくつかの拡張機能を調べましたが、それらの多くは安定しておらず、ベータ版でもありません。たとえば、SharedUserRightsです。ここでの考え方は、「非アクティブ」権限を作成し、その権限グループでアカウントをグローバルに管理することです。

私はアイデアを受け入れます!うまくいけば、これはすべて理にかなっています。事前に感謝します!

4

3 に答える 3

1

ユーザーを完全にロックアウトする (ログインを無効にする) 場合は、AbortLogin フックを使用して、ユーザー名をブラックリストと照合します。例については、 Extension:Lockoutを参照してください。

ログインはできるが編集はできないようにしたい場合は、おそらく UserGetRights フックを使用して編集権限を取り除くことができます。

于 2012-11-13T12:24:55.677 に答える
1

提案をありがとう!最終的に、グローバル ipblocks テーブルとExtension:Lockoutを使用してユーザーのログインをブロックし、アカウントを事実上無効にしました。LocalSettings.php ファイルで、グローバル ユーザー用の共有テーブルと共有データベースをセットアップします。

 $wgSharedDB = 'up_commonusers';
 $wgSharedTables = array(  'user', 'user_groups', 'account_requests', 'account_credentials', 'ipblocks');

このリストを使用して、ユーザー名に基づいてブロックされたアカウントを管理する予定です: Special:BlockList. このリストの欠点は、ユーザーのホーム wiki がないことです。そのため、ipblocks テーブルに 'ipb_user_home' 列を追加して、後でこのフックで参照として使用できるようにしました。

 $wgHooks['BlockIpComplete'][] = 'addHomeWikiData';

 function addHomeWikiData(&$block, &$user){
     $userId = $block->getTarget() instanceof User ? $block->getTarget()->getID() : 0;

     if($userId>0){
        $dbw = wfGetDB(DB_MASTER);
        $row = $dbw->selectRow('user', '*', array('user_id'=>$userId));
        $dbw->begin();
        $dbw->update('ipblocks', array('ipb_user_home'=>$row->user_home), array('ipb_user'=>$userId));
        $dbw->commit();
        return true;
     }
     return false;
}

最終的には、この情報を使用する独自のブロック リスト テーブルを作成する予定ですが、今のところ必要なものは揃っています。

したがって、ワークフローは非常に単純です。通常の Special:Block ページを使用してユーザーをブロックします。ブロックされたユーザーは、SharedTable を構成したため、ローカル ipblocks テーブルではなくグローバル ipblocks テーブルに追加され、フックを使用してホーム wiki データが追加されます。ロックアウト拡張機能は、ユーザーがブロックされているかどうかを検出し、エラー メッセージをスローする、ログイン時に別のフックを使用します。エラーが出てログインできません。

お役に立てれば!

于 2012-11-21T21:01:51.387 に答える
0

mediawiki標準のユーザー権利処理の何が問題になっていますか? 特定のグループに読み取り/書き込みアクセス権を付与し、関連性がなくなったユーザーをそのグループから削除するだけですか?

于 2012-11-12T21:27:33.863 に答える