Nonaktifkan situs web untuk semua kecuali pengguna yang masuk

11

Saya tahu ada banyak cara untuk melakukan ini, namun ketika saya berpikir mendalam, penonaktifan global situs mungkin sulit.

Yang saya inginkan adalah ketika pengguna pergi ke situs web, mereka akan diarahkan ke halaman login di mana pun mereka berada. Saya lebih suka tidak memerlukan pengaturan khusus di setiap item menu atau area lain halaman.

Apakah ada cara sederhana untuk melakukan hal ini? Atau pengaya super luar biasa yang melakukan ini? Pencarian saya sejauh ini sia-sia. Namun itu mungkin saja pilihan kata kunci saya di JED / Google.

Jordan Ramstad
sumber
menempatkan situs Anda offline dalam konfigurasi global?
web-tiki
Itu akan bekerja agak, tetapi fitur itu tidak dimaksudkan untuk ini, jadi saya harus mengacaukan dengan grup pengguna dan semacamnya, jadi karena saya menggunakan OAuth ketat untuk login (tidak ada pengguna) grup pengguna tidak mudah untuk ditambahkan ke dalamnya.
Jordan Ramstad

Jawaban:

14

Akankah salah satu dari ini bekerja?

Hanya Anggota (Dari JED)

Jauhkan mata Anda dari bagian atau seluruh situs web Anda, sementara mereka tetap anonim. Secara opsional, Anda dapat mengizinkan pengunjung untuk mendaftar langsung ke situs web Anda dengan atau tanpa memerlukan kode undangan.

terdaftar Saja (Dari JED)

plugin Registed onlyly membatasi akses ke situs Joomla hanya untuk pengguna terdaftar.

Ketika seorang tamu mencoba mengakses konten Joomla, mereka akan diarahkan ke halaman login.

Brian Peat
sumber
1
Terdaftar hanya tampaknya berfungsi seperti pesona :)
Jordan Ramstad
5

1) Gunakan ACL Built-In Joomla !.

Saya sarankan untuk mengarahkan pengunjung ke halaman login dan menggunakan ACL bawaan Joomla! Menggunakan pengguna terdaftar.

Tetapkan item Menu Tingkat Atas dengan izin untuk pengguna Terdaftar - dan kemudian setiap item Menu di pohon itu hanya akan terlihat dan tersedia untuk pengguna Terdaftar.

Ada tutorial yang sangat baik tentang ACL di Joomla! Documents.

Namun, file dan dokumen masih dapat diunduh oleh pengguna yang tidak terdaftar (yaitu jika mereka memiliki tautan langsung).

Dalam hal ini, Anda harus menggunakan ekstensi pihak ke-3, jika Anda ingin melindungi dokumen-dokumen itu, seperti Akeeba Release Systems atau SobiPro.

2) Direktori yang Dilindungi Kata Sandi

Cara 'paling sederhana' untuk melindungi situs Anda adalah dengan Kata Sandi Lindungi direktori Anda melalui .htaccess /

Ini tidak berlaku, tetapi jika Anda menggunakan cPanel, misalnya, buka Keamanan -> Direktori yang Dilindungi Kata Sandi dan gunakan wizard untuk memberi nama direktori, tambahkan atau hapus pengguna dan tetapkan pengguna tersebut ke Direktori Dilindungi Kata Sandi - Anda dapat memberikan nama unik kepada setiap pengguna dan kata sandi.

Ini tidak valid, tetapi sederhana dan cukup sering digunakan dalam praktik - namun, saya tegaskan, mungkin sebaiknya menggunakan ACL dan jika melindungi dokumen dari pengunduhan, ekstensi pihak ke-3.

Jika Anda menyimpan file / dokumen Anda di bawah direktori Protected Password, maka itu akan dilindungi juga - mengharuskan pengguna dengan izin mencoba mengakses direktori itu untuk login terlebih dahulu.

NivF007
sumber
3

Saya punya permintaan klien untuk membuat ekstranet untuk mereka menggunakan Joomla, yang harus 'dikunci' seketat mungkin. Saya melakukan ini dengan mengatur situs ke Offline dalam Konfigurasi Global , kemudian mengedit ACL untuk memberikan 1 grup pengguna khusus yang saya buat izin Akses Offline .

Saya perhatikan di komentar yang Anda sebutkan menggunakan OAuth untuk masuk - beberapa ekstensi yang membantu dengan ini dapat dikonfigurasi untuk secara otomatis menambahkan pengguna ke grup pengguna, jadi Anda kemudian dapat menggunakan fungsionalitas ini untuk menambahkannya ke grup yang dikonfigurasi sesuai instruksi di atas.

Saya kemudian mengesampingkan offline.phpfile dalam template saya untuk membuatnya tampak lebih seperti halaman login gaya ekstranet, daripada halaman 'Situs ini offline'.

tangan coding
sumber
3

Saya akan memberikan jawaban saya untuk ini berdasarkan jawaban @ Bryan.

The Members Only Plugin terlihat sangat menjanjikan, sehingga tidak ada Komentar itu.

The registeredOnly plugin gratis, namun saya tidak terkesan dengan kode, jadi saya mengambil kebebasan forking dan menulis ulang dan menghapus kode usang.

Selain itu, saya menghapus dukungan Community Builder karena .... well ... Saya benci Community Builder:

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

Pasang juga di Github: https://github.com/Joomla-StackExchange/registeredOnly

Semoga ini bisa membantu beberapa dari Anda

Lodder
sumber
0

Anda dapat mengatur izin semua tautan menu untuk terdaftar, memaksa pengguna untuk masuk.

Adam B
sumber
1
Karena tidak ada item menu selain itu login akan ditampilkan tanpa pengguna login, saya lebih suka untuk menghindari langkah tambahan jika mungkin, seperti yang saya katakan dalam pertanyaan.
Jordan Ramstad
1
Anda dapat secara default ke halaman login ketika anggota menekan alamat situs Anda. Mereka masuk - item menu muncul. Di mana langkah ekstra? ACL diatur dengan indah untuk ini.
NivF007
@ NivF007 Langkah tambahan adalah mengatur akses menu ke "Terdaftar" setiap kali Anda membuat item menu. Solusi paling sederhana adalah dengan dapat menetapkan tingkat akses menu default, alih-alih hanya default ke "Publik". Jika Anda dapat mengaturnya ke "Terdaftar" secara default, ekstensi tidak diperlukan.
David Fritsch
1
@ DavidVritsch Mengatur satu parameter pada pembuatan tautan menu tidak terlalu sulit. Ini tidak seperti Anda menambahkan tautan menu baru setiap hari.
Adam B
1
@ AdamB Itu akan berhasil! Dan kemudian mengatur modul menu untuk memulai pada level dua. Jika Anda menginginkan hanya satu lapisan. Sebuah solusi aneh dalam pikiran saya tetapi harus dimungkinkan
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');

rekatkan kode ini ke file index.php dari template Anda saat ini

Канбото Мыктыбек
sumber