我知道如何为tastypie资源设置身份验证/ authortization:通过资源Meta类中的设置。我如何验证/授权访问顶级架构?
例如,我可以在/api/v1/resource
验证/授权资源,但如何在/api/v1
验证/授权架构?
答案 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())
...