2010-09-28 28 views
7

मैं अपने Django ऐप्स में से एक में आरएसएस फ़ीड जोड़ने की सोच रहा हूं और मैं उन्हें प्रमाणित करने में सक्षम होना चाहता हूं।Django आरएसएस फ़ीड प्रमाणीकरण

मैं Django 1.2 में नए सिंडिकेशन ढांचे का उपयोग करना चाहता हूं। मैंने दस्तावेज़ों को यह कैसे किया है और मूल फ़ीड सेटअप करने के बारे में पढ़ा है।

मैं फ़ीड प्रमाणीकृत करने के लिए नया हूं, इसलिए मुझे यकीन नहीं है कि लेने का सबसे अच्छा तरीका क्या है या मेरे विकल्प वास्तव में क्या हैं।

प्रत्येक उपयोगकर्ता का एक अद्वितीय उप डोमेन होता है और मैं यूआरएल संरचना को इस तरह कुछ दिखाना चाहता हूं: http://mysubdomain.mysite.com/myapp/rss/ यदि संभव हो तो।

मैं नहीं चाहता कि फ़ीड सार्वजनिक रूप से उपलब्ध हों, क्या प्रमाणीकरण के लिए उपयोगकर्ता नाम और पासवर्ड का उपयोग करना संभव है? क्या आपने पाया है कि अधिकांश फ़ीड पाठक इसका समर्थन करते हैं? यदि प्रत्येक उपयोगकर्ता के लिए प्रमाणित करना संभव नहीं है, तो क्या मुझे एक अद्वितीय यूआरएल देने के लिए यूयूआईडी का उपयोग करने की कोशिश करनी चाहिए या यह पर्याप्त सुरक्षित नहीं है?

जैसा कि आप शायद बता सकते हैं कि मुझे यकीन नहीं है कि इसके साथ क्या दिशा लेनी है, इसलिए ऐसा करने के सर्वोत्तम तरीके पर कोई सलाह बहुत सराहना की जाएगी।

धन्यवाद

उत्तर

2

आप एक राय यह है कि प्रवेश करना पड़ता है में सिंडिकेशन दृश्य django.contrib.syndication.views.feed लपेटकर की कोशिश की है? आरएसएस फ़ीड सामान्य रूप से HTTP पर लाया जाना चाहिए, इसलिए यह काम करना चाहिए!

# Import Django's standard feed view. 
from django.contrib.auth.decorators import login_required 
from django.django.contrib.syndication.views import feed 

# Wrap it in a new feed view that requires authentication! 
private_feed = login_required(feed) 

चेतावनी: मैंने कभी कोशिश नहीं की है!

संपादित करें!

RSS रीडर्स कि पुनर्निर्देशन का समर्थन नहीं करते हैं, तो निम्न के साथ एक HTTP 401 स्थिति कोड वापस के साथ सुरक्षित होने के लिए:

authentication_url = '/accounts/login' 
def feed_safe_login_required (view): 
    def _ (request, *args, **kwargs): 
     if not request.user.is_authenticated: 
      return HttpResponseNotAuthorized, authentication_url 
    return _ 

feed = feed_safe_login_required(django.contrib.syndication.views.feed) 

के रूप में इस django snippet में परिभाषित कहाँ HttpResponseNotAuthorized है।

+0

मुझे नहीं लगता कि क्योंकि काम करेंगे अगर वे में प्रवेश नहीं हैं, यह उपयोगकर्ता और सबसे आरएसएस फ़ीड पाठकों रीडायरेक्ट का समर्थन नहीं करते रीडायरेक्ट करेगा साइन इन करने के लिए। मुझे पढ़ने से, मुझे लगता है कि मुझे मूल लेख का उपयोग करना है और फिर 401 कोड वापस करना है यदि वे साइन इन नहीं हैं। पता नहीं लगा कि अभी तक ऐसा कैसे किया जाए, इसलिए कोई सलाह उपयोगी होगी। – imns

+0

वही बात स्टिल स्पॉलीज, हालांकि। लपेटें, परीक्षण करें कि उपयोगकर्ता प्रमाणीकृत है, और यदि नहीं, तो एक कस्टम HttpResponse ऑब्जेक्ट वापस करें, जैसा कि यहां दिखाया गया है: http://djangosnippets.org/snippets/813/ –

2

यह एक पुराना धागा है, लेकिन मुझे हाल ही में एक ही प्रश्न का सामना करना पड़ा। मैं फ़ीड वस्तु की __call__ विधि ओवरलोडिंग से इसे हल:

from django.http import HttpResponse 

class ArticleFeed(Feed): 
    "snip [standard definitions of title, link, methods...]" 

    def __call__(self,request,*args,**kwargs): 
     if not request.user.is_authenticated(): 
      return HttpResponse(status=401) 
     else: 
      return super().__call__(request,*args,**kwargs) 
संबंधित मुद्दे