Django Rest Auth基于查询的身份验证令牌重启

时间:2017-03-15 12:52:20

标签: python django django-rest-framework django-rest-auth

我正在构建一个django应用程序,我遇到了以下问题。令牌有一个到期时间,我想创建一个api端点,如果访问该端点刷新用户令牌可用性。

由于我处理应用程序其余部分的性质,我需要使用基于查询的身份验证。我实现了如下:

在我的authentication.py中:

from rest_framework.authentication import TokenAuthentication

class QueryStringBasedTokenAuthentication(TokenAuthentication):
    def authenticate(self, request):
        key = request.query_params.get('auth_token').strip()
        if key:
            return self.authenticate_credentials(key)
        else:
            return super(QueryStringBasedTokenAuthentication, self).authenticate(request)

我已相应更新了设置:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.SessionAuthentication',
        'authsys.auth.QueryStringBasedTokenAuthentication',
    )
}

现在我看到了一些关于如何使用标准标头令牌实现我想要的问题。如何使用基于查询的身份验证?

提前致谢! 卢卡斯

编辑:

这是我到目前为止所做的,但我有一个错误,即访问该网址时不允许GET。 POST方法只给我一个500错误。

class RefreshAuthToken(ObtainAuthToken):
def post(self, request):
    key = request.query_params.get('auth_token').strip()
    try:
        token = self.model.objects.get(key=key)
        token.delete()
        token = Token.objects.create(user=serializer.object['user'])
        token.created = datetime.datetime.utcnow().replace(tzinfo=utc)
        token.save()
        return Response({'token': token.key})
    except self.model.DoesNotExist:
        return Response("myError", status=status.HTTP_400_BAD_REQUEST)

0 个答案:

没有答案