これを行う方法はたくさんありますが、深く考えると、サイトをグローバルに無効にするのは難しいかもしれません。
ユーザーがWebサイトにアクセスすると、どこにいてもログインページにリダイレクトされます。ページのすべてのメニュー項目やその他の領域で特別な設定を必要としない方がいいと思います。
これを行う簡単な方法はありますか?またはこれを行う超素晴らしいプラグイン?これまでの私の検索は無駄になっています。しかし、それはJED / Googleでの私のキーワードの選択かもしれません。
これを行う方法はたくさんありますが、深く考えると、サイトをグローバルに無効にするのは難しいかもしれません。
ユーザーがWebサイトにアクセスすると、どこにいてもログインページにリダイレクトされます。ページのすべてのメニュー項目やその他の領域で特別な設定を必要としない方がいいと思います。
これを行う簡単な方法はありますか?またはこれを行う超素晴らしいプラグイン?これまでの私の検索は無駄になっています。しかし、それはJED / Googleでの私のキーワードの選択かもしれません。
回答:
これらの1つは機能しますか?
匿名のままで、ウェブサイトの一部または全体から目を離してください。必要に応じて、訪問者が招待コードを必要とせずにWebサイトに直接登録できるようにすることができます。
registeredOnlyプラグインは、Joomlaサイトへのアクセスを登録ユーザーのみに制限します。
ゲストがJoomlaコンテンツにアクセスしようとすると、ログインページにリダイレクトされます。
1)Joomla!の組み込みACLを使用する
訪問者をデフォルトでログインページに設定し、登録ユーザーを使用してJoomla!の組み込みACLを使用することをお勧めします。
登録ユーザーへのアクセス許可を持つトップレベルメニュー項目を設定すると、そのツリーの各メニュー項目は登録ユーザーにのみ表示され、利用可能になります。
JoomlaのACLに関する優れたチュートリアルがあります!ドキュメント。
ただし、ファイルやドキュメントは、未登録のユーザーが直接ダウンロードできます(つまり、直接リンクがある場合)。
この場合、Akeeba Release SystemsやSobiProなどのドキュメントを保護するには、サードパーティの拡張機能を使用する必要があります。
2)パスワードで保護されたディレクトリ
サイトを保護する最も簡単な方法は、.htaccess /を使用してディレクトリをパスワードで保護することです。
これは洗練されていませんが、たとえばcPanelを使用している場合は、[セキュリティ]-> [パスワードで保護されたディレクトリ]に移動し、ウィザードを使用してディレクトリに名前を付け、ユーザーを追加または削除して、それらのユーザーをパスワードで保護されたディレクトリに割り当てます。各ユーザーに一意の名前を付けることができます。とパスワード。
それは洗練されていませんが、シンプルで実際にはかなり頻繁に使用されます。ただし、繰り返しますが、ACLを使用するのがおそらく最善で、ドキュメントをダウンロードから保護する場合は、サードパーティの拡張機能を使用します。
ファイル/ドキュメントをパスワードで保護されたディレクトリに保存すると、それらも保護されます。最初にログインするには、そのディレクトリにアクセスする権限を持つユーザーが必要です。
私はクライアントにJoomlaを使用してエクストラネットを作成するように要求しましたが、これはできる限り厳密に「ロックダウン」する必要がありました。これを行うには、グローバル構成でサイトをオフラインに設定し、ACLを編集して、オフラインアクセス権限を作成した1つのカスタムユーザーグループを作成しました。
ログインにOAuthを使用しているとコメントに記載されていますが、これを支援する一部の拡張機能は、ユーザーをユーザーグループに自動的に追加するように構成できるため、この機能を使用して、構成されたグループにユーザーを追加できます。上記の指示。
次にoffline.php
、テンプレートのファイルを上書きして、デフォルトの[このサイトはオフラインです]ページではなく、エクストラネットスタイルのログインページのように見せかけています。
@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
これがあなたの一部に役立つことを願っています
すべてのメニューリンクの権限を登録済みに設定して、ユーザーにログインを強制することができます。
$haystack= JURI::current();
$needle = '/login';
$is_login_page = $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== FALSE);
if(JFactory::getUser()->guest && !$is_login_page && $_SERVER['HTTP_HOST'] != 'vauler.com' && $_SERVER['HTTP_HOST'] != '127.0.0.1:92')
$app->redirect('index.php/login');
このコードを現在のテンプレートのindex.phpファイルに貼り付けます