首页 文章

Django RSS Feed身份验证

提问于
浏览
7

我正在考虑将RSS源添加到我的一个Django应用程序中,我希望能够对它们进行身份验证 .

我想在Django 1.2中使用新的联合框架 . 我已经阅读了有关如何执行此操作的文档并设置了基本的Feed .

我是认证Feed的新手,所以我不确定最好的方法是什么,或者我的选择到底是什么 .

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

我不希望这些供稿公开,是否可以使用用户名和密码进行身份验证?您是否发现大多数Feed阅读器都支持此功能?如果无法对每个用户进行身份验证,我是否应该尝试使用uuid为其提供唯一的URL或者不够安全?

你可以告诉我,我不确定采取什么方向,所以任何关于最佳方法的建议都将非常感激 .

谢谢

2 回答

  • 2

    您是否尝试将联合视图 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)
    

    警告:我从未尝试过这个!

    Edit

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

  • 3

    这是一个旧线程,但我最近遇到了同样的问题 . 我通过重载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)
    

相关问题