使用django-rest-interface
我有一个Django应用程序,想要为它添加一些REST接口。我看到过一个链接,里面提到的内容似乎比较简单,比如它没有提供安全性方面的措施。我该如何限制用户通过这个REST接口查看和修改数据呢?通常我会把这种逻辑放在我的视图里,这样做对吗?还是说我应该把一些逻辑放到模型里?另外,有没有更好的库可以使用,还是说我需要自己写一个?
4 个回答
看起来,Collection
里有一个叫 authentication
的参数。(可以参考这个例子:authentication.py)
其次,(即使Django现在还没有这个功能,)可能应该有一个中间件来检查CSRF/XSRF表单。(哦,似乎真的有一个:可以查看这里。)你还应该能够在urls.py中使用login_required
和 permission_required
装饰器。
即使有了身份验证这个参数,你也无法精确控制用户能做什么。目前的Django-REST接口实现并没有跟踪用户信息,所以你无法利用这些信息进行细致的权限检查。
可以查看一下问题 #32。
不过,扩展这个功能其实比较简单。我使用了很多子类来增加新功能。
在Django中,更新请求的登录信息有点麻烦。与其这样,我选择把信息保留在集合中。
现在,我估计我写的代码,加上补丁和子类,差不多相当于自己写一套RESTful视图函数。
不过,Django-REST很好地处理了HTTP摘要身份验证。我不太想用某种装饰器来替换他们的实现,来适应我的Django视图函数。
[也许我们应该开个开源项目,找个干净的替代方案?]
如果你的主要关注点是安全性,我建议你看看 django-piston 这个应用,链接在这里:http://bitbucket.org/jespern/django-piston/wiki/Home。
我之前用过 django-rest-interface,它很可靠,虽然简单但功能也很强大。不过,django-piston 似乎在未来会更灵活一些。