【发布时间】:2013-07-18 02:41:40
【问题描述】:
我想使用 Tastypie 授权让用户只能访问他们的对象。但是,我在理解我是否正确执行时遇到了问题。我按照这里的例子:
当我尝试创建新对象时,我收到 404 错误,因为评估存在问题
def create_detail(self, object_list, bundle):
return bundle.obj.user == bundle.request.user
如果我将其注释掉,一切正常。我认为将这两行注释掉可以让用户为其他用户创建对象,但是当我尝试它时,我正确地得到了 401(未授权)响应。
这是否意味着这两行是不必要的? Tastypie 如何正确判断我是否有权创建对象?
当我运行它时,我发送了一个 POST 请求,其中“用户”等于相应的 URI(类似于“/api/v1/user/1/”)。我不确定 Tastypie 是否有问题确定
bundle.obj.user
当我这样做时。
将这两行注释掉是否安全? Tastypie 是否使用其他方法之一授权用户?
【问题讨论】:
-
bundle.obj.user == bundle.request.user如果您要更改用户拥有的行(行级授权),将返回 true。这就是你想要做的吗? -
是的。当我执行 PUT 请求时,它可以正常工作。但是,它在 POST 请求期间不起作用。 POST 仅在我删除这两行时才有效。
-
这听起来像是一个错误。我会在 Tastypie 的 Github 页面上将其报告为问题。