web-dev-qa-db-ja.com

ログインしているユーザーを除くすべてのユーザーに対してWebサイトを無効にする

これを行う方法はたくさんありますが、深く考えると、サイトをグローバルに無効にするのは難しいかもしれません。

ユーザーがWebサイトにアクセスすると、どこにいてもログインページにリダイレクトされます。ページのすべてのメニュー項目やその他の領域で特別な設定を必要としない方がいいと思います。

これを行う簡単な方法はありますか?またはこれを行う超素晴らしいプラグイン?これまでの私の検索は無駄になっています。しかし、それはJED/Googleで私のキーワードの選択かもしれません。

11
Jordan Ramstad

これらの1つは機能しますか?

メンバーのみ (JEDから)

匿名のままで、ウェブサイトの一部または全体から目を離してください。必要に応じて、訪問者が招待コードを必要とせずにWebサイトに直接登録できるようにすることができます。

registeredOnly (JEDから)

registeredOnlyプラグインは、Joomlaサイトへのアクセスを登録ユーザーのみに制限します。

ゲストがJoomlaコンテンツにアクセスしようとすると、ログインページにリダイレクトされます。

14
Brian Peat

1)Joomla!の組み込みACLを使用します

訪問者をデフォルトでログインページに設定し、登録ユーザーを使用してJoomla!の組み込みACLを使用することをお勧めします。

登録ユーザーへのアクセス許可を持つトップレベルメニュー項目を設定すると、そのツリーの各メニュー項目は登録ユーザーにのみ表示され、利用可能になります。

Joomlaには優れた ACLのチュートリアル があります!ドキュメント。

ただし、ファイルやドキュメントは、登録されていないユーザーでも直接ダウンロードできます(つまり、直接リンクがある場合)。

この場合、Akeeba Release SystemsやSobiProなどのドキュメントを保護するには、サードパーティの拡張機能を使用する必要があります。

2)パスワードで保護されたディレクトリ

サイトを保護する最も簡単な方法は、.htaccess /を使用してディレクトリをパスワードで保護することです。

これは洗練されていませんが、たとえばcPanelを使用している場合は、[セキュリティ]-> [パスワードで保護されたディレクトリ]に移動し、ウィザードを使用してディレクトリに名前を付け、ユーザーを追加または削除して、それらのユーザーをパスワードで保護されたディレクトリに割り当てます。各ユーザーに一意の名前を付けることができます。とパスワード。

それは洗練されていませんが、シンプルで実際にはかなり頻繁に使用されます。しかし、繰り返しますが、おそらくACLを使用し、ダウンロードからドキュメントを保護する場合は、サードパーティの拡張機能を使用します。

ファイル/ドキュメントをパスワードで保護されたディレクトリに保存すると、それらも保護されます。最初にログインするには、そのディレクトリにアクセスする権限を持つユーザーが必要です。

5
NivF007

@Bryanの回答に基づいて、これに対する私の回答を提供します。

メンバーのみプラグインは非常に有望に見えるので、コメントはありません。

registeredOnlyプラグインは無料ですが、コードに感心していなかったため、フォークして書き直し、非推奨のコードを削除しました。

それに加えて、コミュニティビルダーのサポートを削除しました。

defined('_JEXEC') or die('Restricted access');

class plgSystemRegisteredonly extends JPlugin
{
    public function onAfterRoute() 
    {
        $app   = JFactory::getApplication('site');
        $input = $app->input;
        $user  = JFactory::getUser();

        // Do nothing if in backend or user is logged in
        if ($app->isAdmin() || !$user->guest)
        {
            return;
        }

        // Get the component, view and task
        $option = $input->get('option');
        $view   = $input->get('view');
        $task   = $input->get('task');

        // If user is logging, registering or requesting user/pass, dont redirect
        if (($option == 'com_users') && (($task == 'login') || ($task == 'register_save') || ($task = 'remindusername') || ($task == 'requestreset')))
        {
            return;
        }

        // If user is at login form, registering or recovering user/password, dont redirect
        if (($option == 'com_users') && (($view == 'login') || ($view == 'reset') || ($view == 'remind') || ($view == 'register')))
        {
            return;
        }

        $app->redirect(JUri::base() . 'index.php?option=com_users&view=login', 'You must be logged in to access this site');
    }
}

Githubにもそれを置きます: https://github.com/Joomla-StackExchange/registeredOnly

これがあなたの一部に役立つことを願っています

3
Lodder

私はクライアントにJoomlaを使用してエクストラネットを作成するように要求しましたが、これはできる限り厳密に「ロックダウン」する必要がありました。これを行うには、サイトをOffline in Global Configurationに設定し、ACLを編集して1つのカスタムユーザーグループにOffline Access権限を作成しました。 。

ログインにOAuthをログインに使用していることをコメントに書いています。これを支援する一部の拡張機能は、ユーザーをユーザーグループに自動的に追加するように構成できるため、この機能を使用して上記の指示に従って構成されたグループにそれらを追加します。

次に、offline.phpファイルをデフォルトの「このサイトはオフラインです」ページではなく、エクストラネットスタイルのログインページのように見せるためのテンプレートです。

3
codinghands

すべてのメニューリンクの権限を登録済みに設定して、ユーザーにログインを強制することができます。

0
Adam B