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定义。
答
这是一条旧线程,但我最近遇到了同样的问题。我解决它通过重载饲料对象的__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)
我不认为这会工作,因为如果他们没有登录,就会重定向用户和大多数RSS feed阅读器不支持重定向从阅读起,我认为我必须使用基本身份验证,然后返回401代码,如果他们没有登录。还没有弄清楚如何做到这一点,所以任何建议都会有所帮助。 – imns 2010-09-29 21:14:25
尽管如此,Stills还是一团糟。换句话说,测试用户是否已通过身份验证,如果没有,则返回自定义HttpResponse对象,如下所示:http://djangosnippets.org/snippets/813/ – 2010-09-29 23:37:48