django-rest-framework raise AuthencationFailed导致500响应

时间:2016-09-23 03:24:47

标签: django-rest-framework

我在django-rest-framekwork中为默认的authencations添加了一个Authencation,并在api-guide中记录的错误发生时引发AuthenticationFailed。它返回500响应,表示抛出了AuthenticationFailed的异常,而它应该根据document返回401或403响应。

我检查来源。它捕获此异常并在Request._authenticate()中重新引发,并且永远不会再次捕获。

我错过了什么吗?

我正在使用Django 1.7和django-rest-framework 3.3.3。

代码非常简单:

class CustomAuthentication(authentication.BaseAuthentication):
     def authenticate(self, request):
         raise exceptions.AuthenticationFailed

并在设置中:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'path.to.CustomAuthentication',
    ],
}

1 个答案:

答案 0 :(得分:0)

def initialize_request(self, request, *args, **kwargs):
    request = super(TheViewSet, self).initialize_request(
        request, *args, **kwargs)
    return request

替换为:

def initialize_request(self, request, *args, **kwargs):
    _request = super(TheViewSet, self).initialize_request(
        request, *args, **kwargs)
    return _request

抱歉延误。这几天我度假并去旅行了。我仍然不知道它是如何出问题的。