【发布时间】:2016-03-10 13:10:29
【问题描述】:
我创建了一个自定义权限来检查用户是否登录。我通过令牌检查它,如果令牌不存在,则它没有登录,因此应该重定向到主页。我已经导入了所有必要的要求,比如 HttpResponseRedirect 和其他东西。这在我的视图集中用作权限类(在某些方法中,我将响应呈现为 html 模板,而在某处呈现为 json)。代码如下:
class AccountPermission(permissions.BasePermission):
message = "Not a valid customer"
def has_permission(self, request, view):
if not token:
return HttpResponseRedirect('/')
else:
return True
问题是 Viewset 将来自自定义权限的 HttpResponseRedirect html 视为 True,并允许用户使用 Viewset 中的方法。如何避免这种情况?
【问题讨论】:
-
根据the docs,
has_permission方法应该返回True或False。无法返回重定向响应。 -
感谢阿拉斯代尔。你能告诉一个替代方案吗?
-
我对rest框架不是很熟悉,所以我不知道你在哪里可以处理权限被拒绝的异常并返回重定向。
标签: python django permissions django-rest-framework