Django 注销后销毁令牌
我想在用户注销时销毁身份验证令牌。用户在我提供的视图中成功注销。但当用户注销时,我需要销毁令牌Django 注销后销毁令牌,django,python-3.x,django-rest-framework,Django,Python 3.x,Django Rest Framework,我想在用户注销时销毁身份验证令牌。用户在我提供的视图中成功注销。但当用户注销时,我需要销毁令牌 views.py 你可以这样做 class UserLoginViewSet(viewsets.ViewSet): def create(self,request): try: data=request.data email=data.get('email') password=data.get('pa
views.py
你可以这样做
class UserLoginViewSet(viewsets.ViewSet):
def create(self,request):
try:
data=request.data
email=data.get('email')
password=data.get('password')
date_of_birth=data.get('date_of_birth')
if not all([email,password,date_of_birth]):
raise Exception('all fields are mandetory')
user=authenticate(username=email,password=password)
if user is not None:
token=generate_token()
user_info=MyUser.objects.get(email=email)
data=({
'email':user_info.email,
'password':user_info.password,
#'data_of_birth':user_info.data_of_birth
})
return Response({"message": "You are successfully logged in",
"user_info":data,"token": token, "success": True},status=status.HTTP_200_OK)
else :
raise Exception('not authorised')
except Exception as error:
traceback.print_exc()
return Response({"message": str(error), "success": False}, status=status.HTTP_200_OK)
class LogoutView(APIView):
permission_classes = (permissions.IsAuthenticated,)
def get(self, request):
request.user.auth_token.delete()
logout(request)
return Response({"message": "success", 'code': status.HTTP_200_OK, 'detail': "logout success"})
应用内url.py添加新url:
path('logout/',LogoutView.as_view()),
您使用的是哪种代币?JWT?我使用的是Outh2,您使用的是django oauth toolkit和承载令牌吗?但是您需要传递身份令牌来获取logoutlass LogoutViewSet(ViewSet.ViewSet):permission\u classes=(permissions.IsAuthenticated,)def get(self,request):request.user.auth\u token.delete()注销(request)返回响应({“message:“success”,“code”:status.HTTP_200_OK,'detail':“logout success”})router.register(r'logout',LogoutViewSet,basename='UserEmailViewSet')#my urlsfrom rest#framework从trument.views导入路由器从django.conf.url导入url路由器=路由器.DefaultRouter()路由器.register(r'test',UserViewSet,basename='UserViewSet')路由器。注册(r'login',UserLoginViewSet,basename='UserLoginViewSet')路由器。注册(r'email',OrderViewSet,basename='UserEmailViewSet')路由器。注册(r'logout',LogoutViewSet,basename='UserEmailViewSet')路由器。注册(r'order',OrderViewSet,basename='OrderViewSet')urlpatterns=router.urlsdon在注销时不使用router.register。从router.register中删除注销视图并添加我提供的url
path('logout/',LogoutView.as_view()),