Web sitesini oturum açmış olanlar dışında herkese devre dışı bırak


11

Bunu yapmanın birçok yolu olduğunu biliyorum, ancak derinlemesine düşündüğümde, sitenin küresel olarak devre dışı bırakılması zor olabilir.

Ne istiyorum bir kullanıcı web sitesine gittiğinde, nerede olursa olsun giriş sayfasına yönlendirilir. Her menü öğesinde veya sayfanın diğer alanlarında özel ayarlara ihtiyaç duymamayı tercih ederim.

Bunu yapmanın kolay bir yolu var mı? Yoksa bunu yapan süper harika bir eklenti mi? Şimdiye kadar yaptığım araştırmalar boşuna oldu. Ancak bu, JED / Google'daki anahtar kelime seçimim olabilir.


sitenizi global yapılandırmada çevrimdışı duruma getirme?
web-tiki

Bu biraz işe yarayacaktır, ancak bu özellik bunun için tasarlanmamıştır, bu yüzden kullanıcı grupları ve karışıklıklarla uğraşmak zorunda kalacağım, bu yüzden giriş için sıkı OAuth kullandığımdan beri (kullanıcı yok) kullanıcı grupları eklemek kolay değildir.
Jordan Ramstad

Yanıtlar:


14

Bunlardan biri işe yarar mı?

Yalnızca Üyeler (JED'den)

Anonim kalırken meraklı gözleri kısmen veya tüm web sitenizden uzak tutun. İsteğe bağlı olarak, ziyaretçilerin bir davetiye kodu gerekmeksizin veya gerekmeden doğrudan web sitenize kaydolmasına izin verebilirsiniz.

registeredOnly (JED itibaren)

sadece eklenti Joomla sitesine yalnızca kayıtlı kullanıcılara erişimi kısıtlar.

Bir konuk herhangi bir Joomla içeriğine erişmeye çalıştığında, giriş sayfasına yönlendirilir.


1
Kayıtlı sadece bir cazibe gibi çalışıyor gibi görünüyor :)
Jordan Ramstad

5

1) Joomla! 'Nın Dahili ACL'sini kullanın

Ziyaretçilerinizi bir giriş sayfasına varsayılan olarak kaydettirmenizi ve Kayıtlı kullanıcıları kullanarak Joomla!

Kayıtlı kullanıcılar için izinleri olan bir Üst Düzey Menü öğesi ayarlayın; ardından o ağaçtaki her bir Menü öğesi yalnızca görünür olacak ve Kayıtlı kullanıcılar tarafından kullanılabilecektir.

Joomla'da ACL hakkında mükemmel bir eğitim var ! Dokümanlar.

Ancak, dosyalar ve belgeler hala kayıtlı olmayan kullanıcılar tarafından indirilebilir (yani doğrudan bağlantıya sahiplerse).

Bu durumda, Akeeba Release Systems veya SobiPro gibi bu dokümanları korumak istiyorsanız 3. taraf bir uzantı kullanmanız gerekecektir.

2) Şifre Korumalı Dizinler

Sitenizi korumanın en basit yolu dizininizi .htaccess /

Bu uygun değildir, ancak cPanel kullanıyorsanız, örneğin Güvenlik -> Parola Korumalı Dizinler'e gidin ve dizinleri adlandırmak, kullanıcıları eklemek veya kaldırmak ve bu kullanıcıları Parola Korumalı Dizine atamak için sihirbazı kullanın - her kullanıcıya benzersiz bir ad verebilirsiniz ve şifre.

Bu yetersiz, ancak basit ve pratikte oldukça sık kullanılır - ancak, tekrar ediyorum, muhtemelen en iyi ACL'yi kullanır ve dokümanları indirmeye karşı korursa, 3. taraf bir uzantıdır.

Dosyalarınızı / dokümanlarınızı Parola Korumalı dizinin altında tutarsanız, bu dosyalar da korunur - ilk önce oturum açmak için bu dizine erişmeye çalışan izinleri olan bir kullanıcı gerekir.


3

Müşterilerim Joomla'yı kullanarak mümkün olduğunca kesin bir şekilde kilitlenmesi gereken bir extranet yapma isteğim vardı. Bunu Genel Yapılandırma'da siteyi Çevrimdışı olarak ayarlayarak yaptım , ardından Çevrimdışı Erişim iznini oluşturduğum 1 özel kullanıcı grubunu vermek için ACL'yi düzenledim .

Giriş için OAuth kullandığınızı belirttiğiniz yorumlarda fark ediyorum - buna yardımcı olan bazı uzantılar otomatik olarak bir kullanıcı grubuna kullanıcı eklemek üzere yapılandırılabilir, böylece daha sonra bu işlevselliği, yukarıdaki talimatlar.

Daha sonra offline.phpvarsayılan 'Bu site çevrimdışı' sayfası yerine extranet tarzı bir giriş sayfası gibi görünmesini sağlamak için şablonumdaki dosyayı geçersiz kıldım .


3

@ Bryan'ın cevabına dayanarak bunun cevabını vereceğim.

Üyelere görünüyor çok bu yüzden hiçbir yorum vaat eklentisi.

RegisteredOnly Ben Çatallama ve onu yeniden yazma ve kullanımdan kaldırılmış kodunu kaldırarak özgürlüğümü böylece eklenti, ancak ben, koduyla ücretsiz etkilendim değildir edilmektedir.

Buna ek olarak, Topluluk Oluşturucu desteğini kaldırdım çünkü .... iyi ... Topluluk Oluşturucu'dan nefret ediyorum:

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'a da koyun: https://github.com/Joomla-StackExchange/registeredOnly

Umarım bu birkaçınıza yardımcı olur


0

Tüm menü bağlantılarının iznini kayıtlı olarak ayarlayarak kullanıcıyı oturum açmaya zorlayabilirsiniz.


1
Kullanıcı giriş yapmadan girişten başka bir menü öğesi gösterilmeyeceğinden, soruda söylediğim gibi mümkünse ekstra adımdan kaçınmayı tercih ederim.
Jordan Ramstad

1
Üyeler site adresinize ulaştığında varsayılan olarak giriş sayfasını kullanabilirsiniz. Giriş yapıyorlar - menü öğeleri görünüyor. Ekstra adım nerede? ACL bunun için güzel bir şekilde kuruldu.
NivF007

@ NivF007 Ek adım, her menü öğesi yaptığınızda menü erişimini "Kayıtlı" olarak ayarlamaktır. En basit çözüm, varsayılan olarak "Genel" yerine varsayılan bir menü erişim seviyesi ayarlayabilmektir. Varsayılan olarak "Kayıtlı" olarak ayarlayabilirseniz, herhangi bir uzantı gerekmez.
David Fritsch

1
@DavidFritsch Bir menü bağlantısı oluştururken bir parametre ayarlamak tam olarak zor bir iş değildir. Her gün yeni menü bağlantıları eklemek gibi değil.
Adam B

1
@AdamB Bu işe yarar! Ve sonra menü modülünü ikinci seviyede başlayacak şekilde ayarlayın. Sadece bir katman istersen. Aklımda tuhaf bir çözüm ama mümkün olmalı
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');

bu kodu geçerli şablonunuzun index.php dosyasına yapıştırın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.