gpt4 book ai didi

django - drf django rest auth如何过期或删除 token ?

转载 作者:行者123 更新时间:2023-12-01 08:52:46 24 4
gpt4 key购买 nike

我试图通过tivix(link to documentation)使用django-rest-frameworkdjango-rest-auth实现身份验证。我使用django shell创建了一个用户,例如:

from django.contrib.auth.models import User
user = User.objects.create_user(username='foo', email='foo@bar.com', password='bar')
user.save()

然后根据 Documentation,我使用 django-rest-auth像(Terminal Command)一样登录了用户:
curl -X POST -d "username=foo&password=bar&email=foo@bar.com" http://127.0.0.1:8000/rest-auth/login/

并且返回了 token ,并且我知道用户已通过身份验证。

现在,我使用django-rest-auth文档中描述的方法注销了,仍然可以看到数据库中存在的 token 。然后我再次登录,它返回了与 key 相同的 token 。

因此,是否有任何方法可以在每次用户注销时删除 token 更改或更佳的 token 。此外,在文档中也没有提到 token 本身是否会在经过一定时间后过期(自动删除)。

如果没有这种可能性,在两种情况下如何删除 token ?

编辑:登录和注销代码

urls.py(主要):
url(r'^rest-auth/', include('rest_auth.urls')),

settings.py:
INSTALLED_APPS = [
...
'rest_framework',
'rest_framework.authtoken',
'rest_auth',
...
]

登录CURL命令:(已给出)。
登录命令响应:
{u'key': u'e41f0a1c2f5e55569df1c41d1d5d4efb77beddee'}

注销CURL命令:
curl -X POST -d "key=e41f0a1c2f5e55569df1c41d1d5d4efb77beddee" http://127.0.0.1:8000/rest-auth/logout/

注销响应:
{u'success': u'Successfully logged out.'}

最佳答案

您必须登录才能删除 token 。

这是django-rest-auth处理注销(ref)的方式:

def post(self, request):
return self.logout(request)

def logout(self, request):
try:
request.user.auth_token.delete()
except (AttributeError, ObjectDoesNotExist):
pass

logout(request)

return Response({"success": _("Successfully logged out.")},
status=status.HTTP_200_OK)

因此要注销:
curl -X POST -H "Authorization: Token <token>" http://127.0.0.1:8000/rest-auth/logout/

请注意, django-rest-auth支持基于 session 和DRF token 认证。

这是有关 DRF Token Authentication及其使用方法的文档

编辑

添加了有关DRF token 认证的信息

关于django - drf django rest auth如何过期或删除 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com