2013-02-19 55 views
0

希望有人能帮助我。Django安全

我有一个Django和美味饼图(我使用apikey来验证和授权用户)的堆栈。让我解释我在做什么。

我有几个用户只能访问他们的数据,所以想象一下,通过rest服务的用户访问模型requestoffer的所有行,如下所示。

http://127.0.0.1:8001/api/v1/requestoffer/?format=json&username=door1&api_key=84051c6fd1581ad60ffa96bcf5a50d3fc11ccdd3 

但我不希望该用户访问所有requestoffers,我只是想让他访问他是“专有”的。

你知道如何用Django或Tastypie做到这一点吗?

我让自己清楚了吗?

回答

0

如果每行都属于一个特定用户,那么您可以将其添加为外键以请求提供并过滤用户的查询集。另一种方法是扩展授权类并实现apply_limits。

class MyAuthorization(DjangoAuthorization): 
    def apply_limits(self, request, object_list): 
     if request and hasattr(request, 'user'): 
      return object_list.filter(requestoffer__user=request.user.id) 

     return object_list.none() 
0

有许多方法可以实现权限管理。哪一个适合你的需求完全取决于你。实现这一目标的一种方式可能是创建与所讨论模型的“所有权”关系,然后为该模型创建一个管理器,仅根据请求返回记录。模型管理者的文档非常直截了当(和优雅)。

要使记录所有权自动化,您可以创建一个CurrentUserField,如Pro Django中所述,还有多种实现方法。所以长话短说,你应该通过反复试验来学习。