【发布时间】:2017-04-13 01:28:24
【问题描述】:
我正在使用 DRF 来允许我的移动应用程序的用户对我的网络应用程序进行身份验证。
我想在用户第一次使用客户端“登录”时创建一个与该用户关联的模型实例。
我在 DRF 中使用基于令牌的身份验证,对于我的 /api/authenticate/ 端点,我指向 url(r'^authenticate/', restviews.obtain_auth_token),
似乎处理这个问题的最好方法是通过将这个类添加到我的 api/views.py 来覆盖获取AuthToken(APIView)。这个类看起来像这样:
class ObtainAuthTokenCustomized(APIView):
throttle_classes = ()
permission_classes = ()
parser_classes = (parsers.FormParser, parsers.MultiPartParser, parsers.JSONParser,)
renderer_classes = (renderers.JSONRenderer,)
serializer_class = AuthTokenSerializer
def post(self, request, *args, **kwargs):
serializer = self.serializer_class(data=request.data)
serializer.is_valid(raise_exception=True)
user = serializer.validated_data['user']
token, created = Token.objects.get_or_create(user=user)
return Response({'token': token.key})
obtain_auth_token = ObtainAuthTokenCustomized.as_view()
看起来我想在 get_or_create 之前插入一个测试,以确定之前是否已为此用户创建了令牌。如果是这样,请执行我计划的模型实例创建。
有没有更好的方法来处理这个问题?
【问题讨论】:
标签: django authentication django-rest-framework