【发布时间】:2015-07-14 12:14:51
【问题描述】:
我有一个 Django Rest Framework 应用程序。 通过登录方式进行认证:
def login(self, request):
user = find_my_user(request)
user.backend = 'django.contrib.auth.backends.ModelBackend'
login(request, user)
return Response({"status": "ok"})
身份验证工作正常。
我有一个 ViewSet 有一个 list_route() 需要使用经过身份验证的用户。 代码如下:
class CommonView(viewsets.ViewSet):
@list_route()
@authentication_classes(SessionAuthentication)
@permission_classes(IsAuthenticated)
def connected(self, request):
return Response({"status": "ok"})
即使用户未通过身份验证(无会话 cookie),也会执行操作。
作为一种变通方法,我已经这样做了:
class CommonView(viewsets.ViewSet):
@list_route()
def connected(self, request):
if request.user.is_authenticated():
return Response({"status": "ok"})
else:
return Response({"status": "ko", "message": "Unauthenticated"})
但我觉得它可以更清洁,有什么想法吗?
【问题讨论】:
标签: django authentication django-rest-framework