验证/授权访问tastypie顶级API模式

时间:2012-09-09 06:40:30

标签: tastypie

我知道如何为tastypie资源设置身份验证/ authortization:通过资源Meta类中的设置。我如何验证/授权访问顶级架构?

例如,我可以在/api/v1/resource验证/授权资源,但如何在/api/v1验证/授权架构?

2 个答案:

答案 0 :(得分:4)

默认情况下,使用tastypie的默认机制没有简单的方法。如果查看api.py文件,您会看到top_level方法没有应用身份验证/授权机制。

我认为实现所需内容的最简洁方法是扩展Api类并重写top_level方法以检查是否允许用户查看结果。 然而,这可能是过于复杂的,因为Api本身不使用自动化和认证方法。因此,您可能希望覆盖Api的urls方法,方法是删除那里的top_level定义并将其放在资源中的URL中。

答案 1 :(得分:2)

我也必须解决这个问题。这是Anna的建议的代码示例:

class ApiWithAuth(Api):
    def top_level(self, request, api_name=None):
        auth = MyAuthentication()
        r = auth.is_authenticated(request)
        if r != True:
            return r

        return super(ApiWithAuth, self).top_level(request, api_name)


api = ApiWithAuth(api_name='v2')
api.register(MyResource())
api.register(MyOtherResource())
...