Отключить веб-сайт для всех, кроме зарегистрированных пользователей

Я знаю, что есть много способов сделать это, однако, когда я думаю глубоко, глобальное отключение сайта может быть затруднено.

Что я хочу, когда пользователь переходит на сайт, они перенаправляются на страницу входа в систему независимо от того, где они находятся. Я бы предпочел не нуждаться в специальных настройках в каждом пункте меню или в другой области страницы.

Есть ли простой способ сделать это? Или супер удивительный плагин, который делает это? Мои поиски до сих пор были напрасны. Однако это может быть мой выбор ключевых слов в JED /Google.

11 голосов | спросил Jordan Ramstad 2 Maypm14 2014, 21:12:54

6 ответов


14

Будет ли один из них работать?

Только участники (от JED)

Держите любопытных глаз подальше от части или всего вашего сайта, пока они остаются анонимными. При желании вы можете разрешить посетителям напрямую регистрироваться на вашем сайте с помощью или без запроса кода приглашения.

registeredOnly (из JED)

registeredOnly плагин ограничивает доступ к сайту Joomla только зарегистрированным пользователям.

Когда гость пытается получить доступ к контенту Joomla, он перенаправляется на страницу входа.

ответил Brian Peat 2 Maypm14 2014, 22:12:09
5

1) Использовать встроенный ACL для Joomla!

Я рекомендую отключить посетителей на странице входа в систему и использовать встроенный ACL для Joomla !, с использованием Зарегистрированных пользователей.

Установите пункт меню верхнего уровня с разрешениями для зарегистрированных пользователей - и каждый элемент меню на этом дереве будет доступен только для зарегистрированных пользователей.

В Joomla есть отличный учебник по ACL . Docs.

Однако файлы и документы могут быть загружены незарегистрированными пользователями (т. е. если у них есть прямая ссылка).

В этом случае вам нужно будет использовать стороннее расширение, если вы хотите защитить эти документы, такие как системы выпуска Akeeba или SobiPro.

2) Защищенные паролем каталоги

«Самый простой» способ защитить ваш сайт - это пароль. Защитите свой каталог через .htaccess /

Это неэлегантно, но если вы используете cPanel, например, перейдите в раздел Безопасность -> Защищенные паролем каталоги и используйте мастер для указания каталогов, добавления или удаления пользователей и назначения этих пользователей в Защищенный паролем каталог - вы можете дать каждому пользователю уникальное имя и пароль.

Это неэлегантно, но просто и используется довольно часто на практике - однако, повторяю, это, вероятно, лучше всего использовать ACL и защищать документы от загрузки, стороннее расширение.

Если вы сохраняете свои файлы /документы в каталоге Password Protected, тогда они также будут защищены: требуется, чтобы пользователь с разрешениями пытался получить доступ к этому каталогу для входа в систему.

ответил NivF007 3 Maypm14 2014, 23:42:40
3

У меня был клиентский запрос для создания экстрасети для них с помощью Joomla, который должен был быть «заблокирован» как можно более строго. Я сделал это, установив сайт в Оффлайн в Глобальная конфигурация , а затем отредактировал ACL, чтобы дать 1 пользовательскую группу пользователей. Я создал разрешение Автономный доступ . .

В комментариях вы отмечаете, что используете OAuth для входа в систему - некоторые расширения, которые помогают в этом, могут быть настроены на автоматическое добавление пользователей в группу пользователей, поэтому вы могли бы использовать эту функциональность, чтобы добавить их в группу, настроенную в соответствии с приведенными выше инструкциями.

Затем я переопределял файл offline.php в моем шаблоне, чтобы он выглядел скорее как страница входа в стиле экстрасети, а не по умолчанию. Эта страница находится в автономном режиме.

ответил codinghands 7 Mayam14 2014, 10:01:16
3

Я собираюсь дать свой ответ за это, основываясь на ответе @ Брайана.

Плагин Только члены выглядит очень многообещающим, поэтому не комментируйте это.

Плагин registeredOnly свободен, однако меня не впечатлил код, поэтому я позволил себе разблокировать и перезаписать его и удалить устаревший код.

В дополнение к этому я удалил поддержку Community Builder, потому что ... ну ... я ненавижу 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');
    }
}

Положите его также на Github: https://github.com/Joomla-StackExchange/registeredOnly

Надеюсь, это поможет нескольким из вас.

ответил Lodder 31 MarpmThu, 31 Mar 2016 16:15:57 +03002016-03-31T16:15:57+03:0004 2016, 16:15:57
0

Вы можете установить разрешение всех ссылок на меню на зарегистрированные, заставляя пользователя войти в систему.

ответил Adam B 3 Mayam14 2014, 00:09:35
-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');

вставьте этот код в файл index.php вашего текущего шаблона

ответил Канбото Мыктыбек 31 MarpmThu, 31 Mar 2016 12:17:14 +03002016-03-31T12:17:14+03:0012 2016, 12:17:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132