2015-12-14 5 views
5

मुझे निम्नलिखित विषय पर कुछ मदद और सलाह चाहिए।लार्वेल 5: अपाचे PHP http प्रमाणीकरण

मेरे बोस के पास एक साधारण अपाचे सर्वर सेटअप है और इसमें a simple php auth सेटअप भी है। जैसे ही उपयोगकर्ता इस तरह के पैनल का उपयोग करके मान्य होता है।

enter image description here

वह/वह सब इसके पीछे चल रहे अनुप्रयोगों का उपयोग करने की तुलना में है। तो दूसरे शब्दों में यह पैनल 'गेट' के रूप में कार्य करता है, अगर आप गेट पर हैं तो आपके पास पहुंच है (बेशक वेब सर्वर पर अनुमति तालिका चल रही है)।

समस्या

अनुप्रयोग मैं Laravel 5 गेट के पीछे चलाने की आवश्यकता का उपयोग कर निर्माण कर रहा हूँ, तो यह अर्थ है कि एप्लिकेशन पता है, जो उपयोगकर्ता के जरूरत है।

$_SERVER['PHP_AUTH_USER']; का उपयोग करते हुए मैं प्राप्त कर सके username जिसका वर्तमान में लॉग इन।

लेकिन मैं अपने एप्लिकेशन पर user's कार्यों को ट्रैक करने के लिए क्या चाहते हैं? मुझे $this->user_id की तरह कुछ चाहिए?

तो मैं सोच रहा था जैसे उपयोगकर्ता 'गेट' पास करता है, मैं उसे username लाता हूं और ऐसा करने से उपयोगकर्ता को अपने डेटाबेस में इसे सहेजकर लार्वेल के पीछे चल रहा हूं।

if(isset($_SERVER)) 
    { 
    if (array_key_exists('PHP_AUTH_USER', $_SERVER)) { 
     $agent = $_SERVER['PHP_AUTH_USER']; //Request::server('PHP_AUTH_USER') 

    } 

    $user = User::create([ 
     'username' => $agent, 

     ]); 
    } 

लेकिन यह उपयोगकर्ता हर बार उपयोगकर्ता को पृष्ठ को रीफ्रेश करता है! लेकिन आगे जाने के बिना ऐसा करने का सबसे अच्छा तरीका क्या है?

  1. क्या मुझे एक अलग प्रदाता की आवश्यकता है (मैंने ऊपर दिए गए कोड का परीक्षण AppServiceProvider) किया है?

  2. username को सहेजने के बाद मैं इस $this->user_id की तरह कुछ कैसे कर सकता हूं?

नोट: मुझे पता है Laravel बॉक्स से बाहर मूल प्रमाणीकरण है, लेकिन इस काम नहीं करेगा क्योंकि उपयोगकर्ता ने अभी तक मेरी डेटाबेस में नहीं कर रहे हैं। मुझे उपरोक्त की तरह पहले उन्हें बनाने की जरूरत है।

+0

कितने उपयोगकर्ताओं पेज के लिए उपयोग होगा? क्या यह किसी भी दर्शक के लिए सार्वजनिक रूप से उपलब्ध है या यह एक आंतरिक पृष्ठ है जिसका उपयोग एन निश्चित उपयोगकर्ताओं द्वारा किया जाएगा? – lesssugar

+0

कंपनी के अंदर @lesssugar उपयोगकर्ताओं के पास सभी पहुंच है (निश्चित रूप से लॉगिन करने के बाद)। यह इंटरनेट से सार्वजनिक रूप से सुलभ नहीं है (यदि आपका मतलब है) – user3641381

उत्तर

1

पहले, प्रदान किए गए उपयोगकर्तानाम के साथ एक उपयोगकर्ता पहले से ही अपने डेटाबेस में मौजूद है अगर आप जाँच करनी चाहिए।इस तरह आप हर ताज़ा करने पर एक नया उपयोगकर्ता नहीं बनाते हैं। फिर आप उपयोगकर्ता को लॉगिन करने के लिए Auth::login($user); का उपयोग कर सकते हैं जो आपको Laravel द्वारा प्रदान किए गए auth मिडलवेयर का उपयोग करने की अनुमति देता है (auth.basic नहीं!)। इस तरह आप उपयोगकर्ता के बारे में प्रमाणीकरण मुखौटा के साथ अपने पूरे अनुप्रयोग से अधिक उपयोगकर्ता पहुँच सकते हैं और अतिरिक्त जानकारी स्टोर कर सकते हैं:

if(isset($_SERVER)) 
{ 
    if (array_key_exists('PHP_AUTH_USER', $_SERVER)) { 
     $agent = $_SERVER['PHP_AUTH_USER']; //Request::server('PHP_AUTH_USER') 

     // Try to find an existing user, or create a new one if the user does not exist 
     $user = User::firstOrCreate([ 
      'username' => $agent, 
     ]); 

     // Authenticate the user 
     \Auth::loginUsingId($user->id); 
    } 
} 
+0

क्या आप उपरोक्त कोड को एक अलग प्रदाता (केवल एक बार ट्रिगर करने के लिए) रखने की सलाह देंगे या बस इसे 'AppServiceProvider' में रखें? क्योंकि हर बार जब मैं एक निश्चित कमांड लाइन चलाता हूं तो मुझे त्रुटि अपवाद 'अपरिभाषित चर मिलता है: एजेंट' – user3641381

+0

आपको अपने दूसरे if-statement में लॉगिन कोड रखना चाहिए। मैंने तदनुसार अपना जवाब अपडेट किया। कारीगर अब और असफल नहीं होना चाहिए। आप इसे AppServiceProvider के अंदर रख सकते हैं। मैं उपर्युक्त कोड को एक समर्पित सेवा प्रदाता में ले जाऊंगा क्योंकि एप्लिकेशन बड़ा हो जाता है। आखिरकार, मैं अपने स्वयं के कस्टम ऑथ प्रदाता को लागू करने की अनुशंसा करता हूं: http://laravel.com/docs/5.1/authentication#adding- कस्टम- प्रमाणीकरण- ड्राइवर – tommy

+0

मैंने इसका परीक्षण किया है। यह केवल एक उपयोगकर्ता बनाता है! इसलिए उदाहरण के लिए यदि मैं इसमें लॉग इन करता हूं तो मेरे उपयोगकर्ता (लॉगिन उपयोगकर्ता नाम के साथ) बनाता है, लेकिन अगर कंपनी में किसी और ने यूआरएल तक पहुंचने का प्रयास किया है (मेरा मतलब है लॉग इन करना) इससे इससे 'उपयोगकर्ता' नहीं निकलता है । कोई विचार? – user3641381

1

मुझे पता है कि यह नहीं है कि आप क्या सुनना चाहते हैं, लेकिन मैं वास्तव में लैरवेल के प्रमाणीकरण को नियोजित करता हूं। अपाचे मूल लेख को अनधिकृत उपयोगकर्ताओं को आपके पृष्ठ तक पहुंचने से रोकना चाहिए, और हो सकता है कि पृष्ठ को बॉट्स द्वारा क्रॉल किए जाने से रोकें - आपके ऐप में लॉगिन फॉर्म के रूप में कार्य न करें।

अपाचे ऑथ के लिए प्रमाण-पत्रों का एक सेट बनाएं, इसलिए सभी लोग जिनके पास यह पृष्ठ तक पहुंच सकता है। लेकिन फिर, उपयोगकर्ता नाम और पासवर्ड के साथ एक मानक लॉगिन फॉर्म बनाएं, जो प्रत्येक उपयोगकर्ता के लिए विशिष्ट होगा। इस तरह, यहां तक ​​कि कोई भी अपाचे से गुज़रने का प्रबंधन करता है, फिर भी वे लॉग इन नहीं होंगे।

सुरक्षा-वार, यह जाने का तरीका होगा। साथ ही, इस तरह से आप नई संभावनाएं खोलते हैं: आप अपने उपयोगकर्ताओं के बारे में अधिक जानकारी स्टोर कर सकते हैं, जैसे उनकी पसंदीदा भाषा या अनुमतियां।

इसके बारे में सोचो :)

+0

समय लेने और मेरे प्रश्न का उत्तर देने के लिए धन्यवाद। हां मैंने प्रश्न पोस्ट करने से पहले आपके sugessetd विकल्प को माना है। लेकिन मुझे एक रास्ता तय करने की आवश्यकता है और बाद में मैं इसे अपने अलग प्रदाता में विस्तारित करूंगा। – user3641381

संबंधित मुद्दे