सभी को वेबसाइट अक्षम करें लेकिन उपयोगकर्ताओं में लॉग इन करें


11

मुझे पता है कि ऐसा करने के कई तरीके हैं, हालांकि जब मैं गहराई से सोचता हूं, तो साइट का एक वैश्विक अक्षम होना मुश्किल हो सकता है।

जब मैं चाहता हूं कि जब कोई उपयोगकर्ता वेबसाइट पर जाता है, तो वे लॉगिन पृष्ठ पर पुनर्निर्देशित किए जाते हैं, चाहे वे कहीं भी हों। मैं हर मेनू आइटम या पृष्ठ के अन्य क्षेत्र में विशेष सेटिंग्स की आवश्यकता नहीं करना पसंद करूंगा।

क्या ऐसा करने के लिए एक सरल तरीका है? या एक सुपर भयानक प्लगइन जो ऐसा करता है? मेरी अब तक की खोजें व्यर्थ रही हैं। हालाँकि, यह सिर्फ JED / Google में मेरे पसंद का कीवर्ड हो सकता है।


अपनी साइट को वैश्विक कॉन्फ़िगरेशन में ऑफ़लाइन रखें?
वेब-टिकी

यह कुछ हद तक काम करेगा, लेकिन यह सुविधा इसके लिए नहीं है, इसलिए मुझे उपयोगकर्ता समूहों के साथ गड़बड़ करना होगा और इसलिए, चूंकि मैं लॉगिन के लिए सख्त OAuth का उपयोग कर रहा हूं (कोई उपयोगकर्ता नहीं) उपयोगकर्ता समूहों को इसमें जोड़ना आसान नहीं है।
जॉर्डन रामस्टैड

जवाबों:


14

इनमें से कोई काम करेगा?

केवल सदस्य (JED से)

आंखों को भाग या आपकी पूरी वेबसाइट से दूर रखें, जबकि वे गुमनाम रहें। वैकल्पिक रूप से आप आगंतुकों को आमंत्रण कोड की आवश्यकता के बिना अपनी वेबसाइट पर सीधे पंजीकरण करने की अनुमति दे सकते हैं।

पंजीकृत (JED से)

केवल पंजीकृत उपयोगकर्ता तक ही जूमला साइट तक पहुँच को पंजीकृत किया जाता है।

जब कोई मेहमान किसी जूमला सामग्री तक पहुंचने की कोशिश करता है, तो उन्हें लॉगिन पृष्ठ पर भेज दिया जाता है।


1
पंजीकृत केवल एक आकर्षण की तरह काम करने लगता है :)
जॉर्डन रामस्टैड

5

1) जूमला का उपयोग करें! एसीएल में निर्मित

मैं आपके आगंतुकों को एक लॉगिन पृष्ठ पर डिफ़ॉल्ट करने और पंजीकृत उपयोगकर्ताओं का उपयोग करके जूमला का उपयोग करने की सलाह देता हूं!

पंजीकृत उपयोगकर्ताओं के लिए अनुमतियों के साथ एक शीर्ष-स्तरीय मेनू आइटम सेट करें - और फिर उस पेड़ पर प्रत्येक मेनू आइटम केवल पंजीकृत उपयोगकर्ताओं को दिखाई और उपलब्ध होगा।

जूमला में एसीएल पर एक उत्कृष्ट ट्यूटोरियल है ! डॉक्स।

हालाँकि, फ़ाइलें और दस्तावेज़ अभी भी गैर-पंजीकृत उपयोगकर्ताओं द्वारा डाउनलोड किए जा सकते हैं (अर्थात यदि उनके पास सीधा लिंक है)।

इस मामले में, आपको 3 पार्टी एक्सटेंशन का उपयोग करना होगा, यदि आप उन डॉक्स की रक्षा करना चाहते हैं, जैसे कि अकीबा रिलीज़ सिस्टम या सोबिरो।

2) पासवर्ड संरक्षित निर्देशिका

आपकी साइट की सुरक्षा करने का सबसे सरल तरीका पासवर्ड को अपनी निर्देशिका को सुरक्षित रखना है ।htaccess /

यह अक्षम है, लेकिन यदि आप उदाहरण के लिए cPanel का उपयोग करते हैं, तो सुरक्षा पर जाएं -> पासवर्ड संरक्षित निर्देशिका और विज़ार्ड का उपयोग निर्देशिकाओं को नाम देने के लिए करें, उपयोगकर्ताओं को जोड़ने या हटाने के लिए पासवर्ड सुरक्षित निर्देशिका में उपयोगकर्ताओं को असाइन करें - आप प्रत्येक उपयोगकर्ता को एक अद्वितीय नाम दे सकते हैं और पासवर्ड।

यह अभेद्य है, लेकिन सरल और व्यवहार में अक्सर उपयोग किया जाता है - हालांकि, मैं दोहराता हूं, यह शायद एसीएल का सबसे अच्छा उपयोग है और अगर डॉक्स को डाउनलोड से बचाता है, तो एक 3 पार्टी एक्सटेंशन।

यदि आप पासवर्ड प्रोटेक्टेड डायरेक्टरी के तहत अपनी फाइल / डॉक्स रखते हैं, तो उन लोगों की भी सुरक्षा की जाएगी - पहले से लॉगिन करने के लिए उस डिरेक्टरी को एक्सेस करने की अनुमति वाले उपयोगकर्ता की आवश्यकता होती है।


3

मेरे पास जूमला का उपयोग करके उनके लिए एक एक्स्ट्रानेट बनाने के लिए एक क्लाइंट अनुरोध था, जिसे कड़ाई से यथासंभव 'बंद' करना पड़ा। मैंने इसे वैश्विक कॉन्फ़िगरेशन में ऑफ़लाइन करने के लिए साइट सेट करके किया , फिर ACL को 1 कस्टम उपयोगकर्ता समूह देने के लिए संपादित किया मैंने ऑफ़लाइन एक्सेस अनुमति बनाई ।

आप जिन टिप्पणियों का उल्लेख कर रहे हैं, मैं आपको लॉग इन के लिए OAuth का उपयोग कर रहा हूं - कुछ एक्सटेंशन जो इसके साथ सहायता करते हैं, उन्हें उपयोगकर्ता समूह में उपयोगकर्ताओं को स्वचालित रूप से जोड़ने के लिए कॉन्फ़िगर किया जा सकता है, इसलिए आप इस कार्यक्षमता का उपयोग करके उन्हें समूह में कॉन्फ़िगर किए गए अनुसार जोड़ सकते हैं। ऊपर दिए गए निर्देश।

मैं तब offline.phpअपने टेम्पलेट में फ़ाइल को ओवररोड करता हूं ताकि यह डिफ़ॉल्ट 'बजाय यह साइट ऑफ़लाइन हो' पृष्ठ के बजाय एक एक्स्ट्रानेट-शैली लॉगिन पृष्ठ की तरह प्रतीत हो।


3

मैं इसके लिए अपना जवाब @ ब्रायन के उत्तर के आधार पर देने जा रहा हूं।

सिर्फ सदस्यों प्लगइन दिखता है बहुत आशाजनक, उस पर तो कोई टिप्पणी नहीं की।

RegisteredOnly प्लगइन मुक्त, फिर भी मैं कोड के साथ, प्रभावित नहीं कर रहा था है तो मैं forking और यह फिर से लिखने और पदावनत कोड को दूर करने की स्वतंत्रता ले लिया।

इसके अलावा, मैंने सामुदायिक बिल्डर समर्थन को हटा दिया क्योंकि .... अच्छी तरह से ... मुझे सामुदायिक बिल्डर से नफरत है:

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

इसे गीथूब पर भी डालें: https://github.com/Joomla-StackExchange/registeredOnly

आशा है कि यह आपकी कुछ मदद करता है


0

आप पंजीकृत सभी मेनू लिंक की अनुमति सेट कर सकते हैं, जिससे उपयोगकर्ता लॉग इन कर सके।


1
क्योंकि कोई भी मेनू आइटम अन्य तब लॉगिन उपयोगकर्ता के बिना लॉग इन नहीं दिखाया जाएगा, मैं यदि संभव हो तो अतिरिक्त कदम से बचना पसंद करूंगा, जैसा कि मैंने सवाल में कहा था।
जॉर्डन रामस्टैड

1
जब सदस्य आपके साइट पते पर हिट करते हैं तो आप लॉगिन पृष्ठ पर डिफ़ॉल्ट कर सकते हैं। वे लॉगिन करते हैं - मेनू आइटम दिखाई देते हैं। अतिरिक्त कदम कहाँ है? इसके लिए एसीएल को खूबसूरती से स्थापित किया गया है।
NivF007

@ NivF007 हर बार जब आप मेनू आइटम बनाते हैं, तो मेनू एक्सेस को "पंजीकृत" करने के लिए मेनू एक्सेस सेट करना होता है। सबसे सरल समाधान एक डिफ़ॉल्ट मेनू एक्सेस स्तर सेट करने में सक्षम होगा, इसके बजाय यह केवल "सार्वजनिक" करने के लिए डिफ़ॉल्ट है। यदि आप इसे "पंजीकृत" डिफ़ॉल्ट करने के लिए सेट कर सकते हैं, तो किसी एक्सटेंशन की आवश्यकता नहीं होगी।
डेविड फ्रिट्स

1
@DavidFritsch मेनू लिंक के निर्माण पर एक पैरामीटर सेट करना बिल्कुल कठिन काम नहीं है। ऐसा नहीं है कि आप हर दिन नए मेनू लिंक जोड़ते हैं।
एडम बी

1
@ AdamB यह काम करेगा! और फिर स्तर दो पर शुरू करने के लिए मेनू मॉड्यूल सेट करें। अगर आप सिर्फ एक परत चाहते थे। मेरे दिमाग में एक अजीब समाधान लेकिन संभव होना चाहिए
डेविड फ्रिट्स

-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 फ़ाइल में पेस्ट करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.