我在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',
],
}
答案 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
抱歉延误。这几天我度假并去旅行了。我仍然不知道它是如何出问题的。