क्या यह संभव है कि लॉगिन के बाद किसी अन्य वेब पर रीडायरेक्ट हो python-social-auth
?
हम कहते हैं:
<a href="{% url "social:begin" "facebook" %}?next={{ request.path }}"></a>
उपरोक्त उदाहरण प्रलेखन के अनुसार है और यह अच्छी तरह से काम कर रहा है, लेकिन जब मैं यह कोशिश करता हूं:
<a href="{% url "social:begin" "facebook" %}?next=http://www.google.com/"></a>
मुझे निम्नलिखित त्रुटि मिलती है:
http://example.com:8000/accounts/profile/ Not Found
यह समझ में आता है; मेरे पास यह URL परिभाषित नहीं है
इस बिंदु पर मैं पहले ही लॉग इन हो चुका हूं, लेकिन मुझे एक त्रुटि पृष्ठ दिखाई देता है।
लेकिन उसी कॉन्फ़िगरेशन के साथ, अगर मैं अपनी साइट पर रीडायरेक्ट करता हूं, तो यह काम करता है, मुझे लगता है कि यह सेटिंग्स के बारे में कुछ है, लेकिन मुझे पता नहीं है कि कौन सा है।
संपादित करें:
अगर मैं हटा देता हूं next
पहले कॉन्फ़िगरेशन में परम प्राप्त करें, यह उसी त्रुटि को बढ़ाता है।
उत्तर:
उत्तर № 1 के लिए 1यह एक अलग डोमेन पर पुनर्निर्देशित करने के लिए सुरक्षित नहीं है, उदा। https://www.google.com
। यह समझने के लिए कि क्यों, मैं कल्पना करता हूं कि मैं आपके उपयोगकर्ताओं को एक लिंक भेजता हूं:
http://www.yoursite.com/login?next=http://myevilsite.com
यदि आपका लॉगिन पृष्ठ विश्वसनीय है next
url, फिर आपके उपयोगकर्ताओं को लॉग इन करने के बाद मेरी साइट पर पुनः निर्देशित किया जाएगा। मैं फ़िशिंग हमलों के लिए इसका उपयोग कर सकता हूं।
इसे रोकने के लिए, Django जाँच करता है कि अगले url को पुनर्निर्देशित करना सुरक्षित है। यदि यह सुरक्षित नहीं है, तो यह पुनर्निर्देशित करेगा settings.LOGIN_REDIRECT_URL
, जो चूक करता है /accounts/profile/
। आप ऐसा कर सकते हैं यहाँ कोड देखें.