it-swarm-vi.com

Vô hiệu hóa trang web cho tất cả nhưng người dùng đã đăng nhập

Tôi biết có nhiều cách để làm điều này, tuy nhiên khi tôi suy nghĩ sâu sắc, việc vô hiệu hóa toàn cầu của trang web có thể khó khăn.

Điều tôi muốn là khi người dùng truy cập trang web, họ được chuyển hướng đến trang đăng nhập bất kể họ ở đâu. Tôi muốn không cần cài đặt đặc biệt trong mỗi mục menu hoặc khu vực khác của trang.

Có một cách đơn giản để làm điều này? Hoặc một plugin siêu tuyệt vời mà làm điều này? Tìm kiếm của tôi cho đến nay là vô ích. Tuy nhiên, đó có thể là lựa chọn từ khóa của tôi trong JED/Google.

11
Jordan Ramstad

Một trong những công việc này sẽ làm việc?

Chỉ thành viên (Từ JED)

Giữ những con mắt tò mò tránh xa một phần hoặc toàn bộ trang web của bạn, trong khi chúng ở ẩn danh. Tùy chọn bạn có thể cho phép khách truy cập đăng ký trực tiếp vào trang web của bạn có hoặc không cần mã mời.

đã đăng ký (Từ JED)

pluginOnOnly chỉ giới hạn quyền truy cập vào trang web Joomla đối với người dùng đã đăng ký.

Khi một khách cố gắng truy cập bất kỳ nội dung Joomla nào, họ sẽ được chuyển hướng đến trang đăng nhập.

14
Brian Peat

1) Sử dụng ACL tích hợp của Joomla!

Tôi khuyên bạn nên mặc định khách truy cập của mình vào trang đăng nhập và sử dụng ACL tích hợp của Joomla bằng người dùng đã đăng ký.

Đặt một mục Menu cấp cao nhất có quyền cho người dùng đã đăng ký - và sau đó mỗi mục Menu trên cây đó sẽ chỉ hiển thị và khả dụng cho người dùng đã đăng ký.

Có một điều tuyệt vời hướng dẫn về ACL trong Joomla! Tài liệu.

Tuy nhiên, các tệp và tài liệu vẫn có thể được tải xuống bởi người dùng chưa đăng ký (nghĩa là nếu họ có liên kết trực tiếp).

Trong trường hợp này, bạn sẽ phải sử dụng tiện ích mở rộng của bên thứ 3, nếu bạn muốn bảo vệ các tài liệu đó, chẳng hạn như Hệ thống phát hành Akeeba hoặc SobiPro.

2) Thư mục được bảo vệ bằng mật khẩu

Cách 'đơn giản nhất' để bảo vệ trang web của bạn là Mật khẩu Bảo vệ thư mục của bạn thông qua .htaccess /

Chẳng hạn, nhưng nếu bạn sử dụng cPanel, chẳng hạn, hãy truy cập Bảo mật -> Thư mục được bảo vệ bằng mật khẩu và sử dụng trình hướng dẫn để đặt tên thư mục, thêm hoặc xóa người dùng và gán cho những người dùng đó vào Thư mục được bảo vệ bằng mật khẩu - bạn có thể đặt cho mỗi người dùng một tên duy nhất và mật khẩu.

Nó không phù hợp, nhưng đơn giản và được sử dụng khá thường xuyên trong thực tế - tuy nhiên, tôi nhắc lại, có lẽ nên sử dụng ACL tốt nhất và nếu bảo vệ tài liệu khỏi tải xuống, tiện ích mở rộng của bên thứ 3.

Nếu bạn giữ các tệp/tài liệu của mình trong thư mục Mật khẩu được bảo vệ, thì những tệp đó cũng sẽ được bảo vệ - yêu cầu người dùng có quyền cố gắng truy cập vào thư mục đó để đăng nhập trước.

5
NivF007

Tôi sẽ đưa ra câu trả lời của mình cho điều này dựa trên câu trả lời của @ Bryan.

Plugin Chỉ các thành viên trông rất hứa hẹn, vì vậy không có nhận xét nào về điều đó.

Plugin đã đăng ký là miễn phí, tuy nhiên tôi không ấn tượng với mã này, vì vậy tôi đã tự do bỏ qua và viết lại nó và xóa mã không dùng nữa .

Thêm vào đó, tôi đã xóa hỗ trợ Community Builder vì .... à ... tôi ghét 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');
    }
}

Đặt nó lên Github nữa: https://github.com/J Joomla -StExExchange/registeredOnly

Hy vọng điều này sẽ giúp một số bạn

3
Lodder

Tôi đã có một yêu cầu khách hàng để tạo một extranet cho họ bằng cách sử dụng Joomla, cái mà phải được 'khóa lại' càng nghiêm ngặt càng tốt. Tôi đã làm điều này bằng cách đặt trang web thành Ngoại tuyến trong Cấu hình toàn cầ, sau đó chỉnh sửa ACL để cung cấp cho 1 nhóm người dùng tùy chỉnh mà tôi đã tạo Truy cập ngoại tuyến quyền .

Tôi nhận thấy trong các nhận xét bạn đề cập bạn đang sử dụng OAuth để đăng nhập - một số tiện ích mở rộng hỗ trợ này có thể được định cấu hình để tự động thêm người dùng vào nhóm người dùng, do đó bạn có thể sử dụng chức năng này để thêm chúng vào nhóm được cấu hình theo các hướng dẫn ở trên.

Sau đó tôi áp đảo offline.php tập tin trong mẫu của tôi để làm cho nó trông giống trang đăng nhập kiểu extranet hơn là trang mặc định 'Trang này đang ngoại tuyến'.

3
codinghands

Bạn có thể đặt quyền của tất cả các liên kết menu thành đã đăng ký, buộc người dùng phải đăng nhập.

0
Adam B