5

ソフトウェアとハ​​ードウェアのドキュメントには、社内でMediaWikiを使用しています。外部ユーザー(顧客、プロジェクトパートナー)のドキュメントの一部への「読み取りアクセス」を許可/取り消すことは簡単ではないようです。ユーザーまたはロールのアクセス権に基づいて、ドキュメントの一部の領域への読み取りアクセスをどのように制御できますか?

編集:私はドキュメントの「古いスタイル」に戻るのが好きではないので、これを求めています-Officeドキュメントを数十の異なる場所に保存し、誰もそれらがどこにあるかについての手がかりを持っていません。したがって、ユーザーに製品情報のみへのアクセスを制限する方法がない場合、経営陣はMediaWikiソリューション全体を削除し、「新しくてより良い」ものを導入するのではないかと心配しています。(これは、すべてのコンテンツを新しいシステムに転送する必要があることを意味する可能性があり、フォーマットやハイパーリンクが失われるなど...)。


コメントと回答に感謝します!

いくつかの興味深い情報はhttp://meta.wikimedia.org/wiki/Access_controlで入手できます。

たとえば、http://sourceforge.net/projects/hiddenwiki/に、活発に開発されているように見えるHiddenWikiパッチがあります

4

8 に答える 8

3

MediaWiki は、登録ユーザーによるページの閲覧を無効にするようには実際には設計されていません。痛みを伴わずにこれを行うことはできないと思います。

ドキュメントから(再フォーマット):

たとえばほとんどのフォーラム ソフトウェアで可能なように、ページを一部のユーザーには正常に動作させ、他のユーザーには見えないようにすることは、まったく別の問題です。MediaWiki は、2 つの基本的なアクセス モード用に設計されています。

  • 誰でも Wiki のすべてのページを閲覧できます (いくつかの特別なページを除いて)。これはウィキペディアとその姉妹プロジェクトで使用されるモードです。
  • 匿名ユーザーは、メイン ページとログイン ページのみを表示でき、ページを編集することはできません。これは基本的に上記と同じですが、技術的な実装 (すべてのページ ビューに対する追加のチェックのみ) に関しては、これが存在する理由です。これは、さまざまなウィキメディア委員会で使用されているものなど、特定の非公開ウィキで使用されている操作モードです。

私の学校では、Wiki を好きなように使用しています。私の友人がそれらを設定しました。彼は、ソフトウェアを機能させるために、ソフトウェアを広範囲にハッキングする必要がありました。MediaWiki を掘り下げた私の経験から、これを機能させるのは楽しい時間です。

4 つのオプションがあります

  • MediaWiki プラグインを入手して、アップグレードすると壊れます。
  • 自分でハックして、アップグレードするたびに作業をやり直してください。
  • 別のウィキ ソフトウェアを使用します。
  • 上記のように、新しい非公開ウィキをセットアップします。
于 2009-04-02T12:53:47.983 に答える
1

他の人が指摘したように、これは MediaWiki のコア機能ではありません。

最も簡単な解決策は、wiki 間のリンクを含む公開 wiki と非公開 wiki を用意することです。(元の wiki をコピーし、パブリック インストールから不要なページを削除し、リダイレクトを追加することから始めます)。

もう 1 つの可能性は、公開ページと非公開ページに別々の名前空間を持ち、構成ファイルの名前空間に従ってアクセシビリティを制限することです。

于 2009-04-08T08:41:27.393 に答える
1

MediaWiki が必ずしも行きたくない場所に移動しようとしているように聞こえるので、より良いツールを選択することをお勧めします。

ウィキとして、私たちは MediaWiki の段階を経ましたが、最終的にはMindTouch Dekiを使用することになりました。その理由は、外観と機能が優れており、管理が簡単だからです (アクセス制御など)。あなたは彼らのサイトですべての詳細を見つけることができます.

ここに良い点があります。現在、MediaWiki から Deki へのコンバーターが利用可能です。私はそれを保証することはできませんが (新品ですべて)、すべてのパーツが無料なので、数時間かけて何ができるかを試してみることをお勧めします。結果が気に入るかもしれません.

于 2009-04-09T07:02:55.640 に答える
0

MediaWiki名前空間を作成し、特定のユーザーを特定の名前空間に割り当てることができます。ただし、注意する必要があります...新しい名前空間のページは、LocalSettings.phpファイルを編集せずにサイトの検索にデフォルトで表示されません。詳細については、ドキュメントを参照してください。

この半関連のスレッドを参照してください。

于 2009-04-07T20:05:55.197 に答える
0

これを行うには、ページアクセス制限拡張機能(http://www.mediawiki.org/wiki/Extension:Page_access_restrictionおよびグループ)を使用できます。

そうは言っても、MediaWikiはあなたがそれをすることをお勧めしません...

( Stack Overflowの質問MediaWiki支払いゲートウェイに対する私の回答から盗まれました。)

于 2009-04-02T15:21:48.620 に答える
0

プライベート ウィキがある場合は$wgBlockDisablesLogin = true、LocalSettings.php でフラグを使用して、ブロックされたユーザーのログイン機能を無効にすることができます (その後、誰かをブロックしてすべてのアクセスを取り消すだけです)。もう 1 つのオプションは、wiki 全体を VPN の背後に置くことです。

参考文献:

于 2014-02-28T21:10:09.667 に答える
0

これが私の解決策です。

私たちはウィキを .htpasswd の背後に保持し、サブドメイン (external.wiki.mydomain.co.uk) の php スクリプトがページをフェッチし、許可されたページの配列に一致する場合にそれを提供します。

また、サイド バーやフッターなども取り除きます。これはおそらく、ウィキが使用しているスタイルに依存しており、strip_content() 関数を微調整する必要がある場合があります。

    $allowed = array(   "Architecture",
                        "Database_Design",
                        "Authentication",
                        "Branding");

    //put your own .htpasswd credentials in here
    $username = "USERNAME";
    $password = "P@ssw)rd";
    $url = "http://internal.wiki.mydomain.co.uk";

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    $output = curl_exec($ch);

    //I have not mod-rewritten the index.php out of the url, hence the 2 lines below...
    $page = str_replace("/index.php/", "",$_SERVER['PHP_SELF']);
    $page = $page == '/index.php' ? "Home" : $page;

    $links = "<div><a href = '/' >Home</a>";
    $links .= isset($_SERVER['HTTP_REFERER']) ? '&nbsp;-&nbsp;<a href = "' . $_SERVER['HTTP_REFERER'] . '" >Back</a>' : '';
    $links .= "</div>";
    if (!in_array($page, $allowed)) {
        $out = "<div>Access denied to " . $page . '</div>' . $links;
    } else {
        curl_setopt($ch, CURLOPT_URL, $url . "/index.php/" . $page);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $output = curl_exec($ch);
        $out = $links . '<br />' . strip_content($output);
    }
    curl_close($ch);
    echo $out;

    /**
     * Strip out unwanted bits of the page, such as side bar and header and footer.
     * @param string $html The raw html
     * @return string
     */
    function strip_content($html)
    {
        $patterns = array(  '!<span class="editsection">.*?<\/span>!is',
                             '@<!-- footer -->.*?<!-- /footer -->@is',
                            '@<!-- panel -->.*?<!-- /panel -->@is',
                            '@<!-- header -->.*?<!-- /header -->@is'

            );
        return preg_replace($patterns, "", $html);
    }

これを拡張するには、最初にログインを追加して、スクリプトがさまざまなユーザーに対してさまざまなページのサブセットを選択できるようにします。

于 2013-12-18T12:38:12.243 に答える