Django RSS源认证

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

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

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

每个用户都有一个唯一的子域,我希望URL结构看起来像这样: http://mysubdomain.mysite.com/myapp/rss/ : 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)

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

编辑

为了安全使用不支持重定向的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)

HttpResponseNotAuthorized在此django片段中定义的位置。


这是一个古老的线索,但我最近遇到了同样的问题。 我通过重载Feed对象的__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)
链接地址: http://www.djcxy.com/p/48257.html

上一篇: Django RSS Feed Authentication

下一篇: Fastest way to read long[] from file?