Deaktivieren Sie die Website für alle außer angemeldeten Benutzern


11

Ich weiß, dass es viele Möglichkeiten gibt, dies zu tun. Wenn ich jedoch tief darüber nachdenke, kann eine globale Deaktivierung der Website schwierig sein.

Ich möchte, dass ein Benutzer, der die Website besucht, unabhängig von seinem Standort zur Anmeldeseite weitergeleitet wird. Ich würde es vorziehen, nicht in jedem Menüpunkt oder anderen Bereich der Seite spezielle Einstellungen zu benötigen.

Gibt es eine einfache Möglichkeit, dies zu tun? Oder ein super tolles Plugin, das das macht? Meine bisherigen Suchanfragen waren vergebens. Dies könnte jedoch meine Wahl der Keywords in JED / Google sein.


Ihre Site in der globalen Konfiguration offline schalten?
Web-Tiki

Das würde etwas funktionieren, aber diese Funktion ist nicht dafür gedacht, daher müsste ich mich mit Benutzergruppen und dergleichen herumschlagen. Da ich striktes OAuth für die Anmeldung verwende (keine Benutzer), sind Benutzergruppen nicht einfach hinzuzufügen.
Jordan Ramstad

Antworten:


14

Würde einer von diesen funktionieren?

Nur für Mitglieder (vom JED)

Halten Sie neugierige Blicke von einem Teil oder Ihrer gesamten Website fern, während diese anonym bleiben. Optional können Sie Besuchern erlauben, sich mit oder ohne Einladungscode direkt auf Ihrer Website zu registrieren.

Nur registriert (vom JED)

Das Plugin "Nur registriert" beschränkt den Zugriff auf die Joomla-Website nur auf registrierte Benutzer.

Wenn ein Gast versucht, auf Joomla-Inhalte zuzugreifen, wird er zur Anmeldeseite weitergeleitet.


1
Registriert scheint nur wie ein Zauber zu funktionieren :)
Jordan Ramstad

5

1) Verwenden Sie die integrierte ACL von Joomla!

Ich empfehle, Ihren Besuchern standardmäßig eine Anmeldeseite zuzuweisen und die integrierte ACL von Joomla! Mit registrierten Benutzern zu verwenden.

Legen Sie ein Menüelement der obersten Ebene mit Berechtigungen für registrierte Benutzer fest. Anschließend ist jedes Menüelement in diesem Baum nur für registrierte Benutzer sichtbar und verfügbar.

Es gibt ein exzellentes Tutorial zu ACL im Joomla! Docs.

Dateien und Dokumente können jedoch weiterhin von nicht registrierten Benutzern heruntergeladen werden (dh wenn sie über den direkten Link verfügen).

In diesem Fall müssen Sie eine Drittanbietererweiterung verwenden, um diese Dokumente wie Akeeba Release Systems oder SobiPro zu schützen.

2) Passwortgeschützte Verzeichnisse

Der "einfachste" Weg, Ihre Site zu schützen, ist das Passwort. Schützen Sie Ihr Verzeichnis über .htaccess /

Es ist unelegant, aber wenn Sie beispielsweise cPanel verwenden, gehen Sie zu Sicherheit -> Kennwortgeschützte Verzeichnisse und verwenden Sie den Assistenten, um Verzeichnisse zu benennen, Benutzer hinzuzufügen oder zu entfernen und diese Benutzer dem Kennwortgeschützten Verzeichnis zuzuweisen. Sie können jedem Benutzer einen eindeutigen Namen geben und Passwort.

Es ist unelegant, aber einfach und wird in der Praxis häufig verwendet. Ich wiederhole jedoch, es ist wahrscheinlich am besten, ACL zu verwenden und, wenn Sie Dokumente vor dem Download schützen, eine Erweiterung eines Drittanbieters.

Wenn Sie Ihre Dateien / Dokumente im Verzeichnis "Kennwortgeschützt" aufbewahren, werden diese ebenfalls geschützt. Ein Benutzer mit Berechtigungen, der versucht, auf dieses Verzeichnis zuzugreifen, muss sich zuerst anmelden.


3

Ich hatte eine Kundenanfrage, mit Joomla ein Extranet für sie zu erstellen, das so streng wie möglich "gesperrt" werden musste. Dazu habe ich die Site in der globalen Konfiguration auf Offline gesetzt und dann die ACL so bearbeitet, dass 1 benutzerdefinierte Benutzergruppe die Berechtigung für den Offlinezugriff erstellt hat .

Ich stelle in den Kommentaren fest, dass Sie OAuth für die Anmeldung verwenden. Einige Erweiterungen, die dies unterstützen, können so konfiguriert werden, dass Benutzer automatisch zu einer Benutzergruppe hinzugefügt werden. Sie können diese Funktion dann verwenden, um sie der gemäß der Konfiguration konfigurierten Gruppe hinzuzufügen oben Anweisungen.

Ich habe dann die offline.phpDatei in meiner Vorlage überschrieben , damit sie eher wie eine Anmeldeseite im Extranet-Stil aussieht als wie die Standardseite "Diese Site ist offline".


3

Ich werde meine Antwort darauf basierend auf der Antwort von @ Bryan geben.

Das Members Only Plugin sieht sehr vielversprechend aus, daher kein Kommentar dazu.

Das registrierte Nur-Plugin ist kostenlos, aber ich war nicht beeindruckt von dem Code, daher habe ich mir die Freiheit genommen, ihn zu forken und neu zu schreiben und den veralteten Code zu entfernen.

Außerdem habe ich die Community Builder-Unterstützung entfernt, weil ... nun ... ich Community Builder hasse:

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');
    }
}

Stellen Sie es auch auf Github auf: https://github.com/Joomla-StackExchange/registeredOnly

Hoffe das hilft ein paar von euch


0

Sie können die Berechtigung aller Menü-Links auf registriert setzen und den Benutzer zur Anmeldung zwingen.


1
Da kein anderer Menüpunkt als die Anmeldung angezeigt wird, ohne dass der Benutzer angemeldet ist, würde ich es vorziehen, den zusätzlichen Schritt nach Möglichkeit zu vermeiden, wie in der Frage angegeben.
Jordan Ramstad

1
Sie können standardmäßig die Anmeldeseite aufrufen, wenn Mitglieder Ihre Site-Adresse erreichen. Sie melden sich an - die Menüpunkte werden angezeigt. Wo ist der Extraschritt? ACL ist dafür wunderbar eingerichtet.
NivF007

@ NivF007 Der zusätzliche Schritt besteht darin, den Menüzugriff jedes Mal, wenn Sie einen Menüpunkt erstellen, auf "Registriert" zu setzen. Die einfachste Lösung wäre, eine Standard-Menüzugriffsebene festlegen zu können, anstatt nur "Öffentlich" zu verwenden. Wenn Sie den Standardwert auf "Registriert" setzen könnten, wäre keine Erweiterung erforderlich.
David Fritsch

1
@DavidFritsch Das Festlegen eines Parameters beim Erstellen eines Menü-Links ist nicht gerade harte Arbeit. Es ist nicht so, dass Sie jeden Tag neue Menü-Links hinzufügen.
Adam B

1
@AdamB Das würde funktionieren! Stellen Sie dann das Menümodul so ein, dass es auf Stufe zwei beginnt. Wenn Sie nur eine Schicht wollten. Eine seltsame Lösung in meinem Kopf, sollte aber möglich sein
David Fritsch

-2
$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');

Fügen Sie diesen Code in die Datei index.php Ihrer aktuellen Vorlage ein

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.