Django RSS源认证

问题描述:

我正在寻找添加RSS源到我的Django应用程序之一,我希望能够让他们进行身份验证。Django RSS源认证

我想在Django 1.2中使用新的联合框架。我已阅读关于如何执行此操作的文档并进行基本的提要设置。

我是新来验证饲料,所以我不知道最好的方法是什么或我的选择真的是什么。

每个用户都有一个唯一的子域,我希望URL结构看起来像这样:http://mysubdomain.mysite.com/myapp/rss/如果可能的话。

我不希望这些提要是公开的,是否可以使用用户名和密码进行身份验证?你有没有发现大多数饲料读者支持这个?如果无法为每个用户进行身份验证,我是否应该尝试使用uuid给他们一个唯一的url或者是否不够安全?

正如你可能会告诉我不知道该采取什么方向,所以任何建议最好的方式来做到这一点将非常感激。

感谢

你试过包裹聚合视图django.contrib.syndication.views.feed成需要登录的看法? RSS提要通常应该通过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) 

警告:我从来没有试过这个!

编辑

要与不支持重定向,具有下列返回HTTP 401状态码RSS阅读器安全:

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) 

哪里HttpResponseNotAuthorized是在这个django snippet定义。

+0

我不认为这会工作,因为如果他们没有登录,就会重定向用户和大多数RSS feed阅读器不支持重定向从阅读起,我认为我必须使用基本身份验证,然后返回401代码,如果他们没有登录。还没有弄清楚如何做到这一点,所以任何建议都会有所帮助。 – imns 2010-09-29 21:14:25

+0

尽管如此,Stills还是一团糟。换句话说,测试用户是否已通过身份验证,如果没有,则返回自定义HttpResponse对象,如下所示:http://djangosnippets.org/snippets/813/ – 2010-09-29 23:37:48

这是一条旧线程,但我最近遇到了同样的问题。我解决它通过重载饲料对象的__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)