66 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| 
 | |
| from rest_framework.exceptions import ParseError
 | |
| from rest_framework.views import APIView
 | |
| from rest_framework.response import Response
 | |
| from rest_framework import status
 | |
| from django.contrib.auth import authenticate, login, logout
 | |
| from rest_framework.generics import CreateAPIView
 | |
| from rest_framework.permissions import IsAuthenticated
 | |
| from apps.auth1.errors import USERNAME_OR_PASSWORD_WRONG
 | |
| 
 | |
| 
 | |
| from apps.auth1.serializers import LoginSerializer
 | |
| 
 | |
| # Create your views here.
 | |
| 
 | |
| 
 | |
| class TokenBlackView(APIView):
 | |
|     permission_classes = [IsAuthenticated]
 | |
| 
 | |
|     def post(self, request, *args, **kwargs):
 | |
|         """
 | |
|         Token拉黑
 | |
| 
 | |
| 
 | |
|         Token拉黑
 | |
|         """
 | |
|         return Response(status=status.HTTP_200_OK)
 | |
| 
 | |
| 
 | |
| class LoginView(CreateAPIView):
 | |
|     """
 | |
|     Session登录
 | |
| 
 | |
| 
 | |
|     账户密码Session登录
 | |
|     """
 | |
|     authentication_classes = []
 | |
|     permission_classes = []
 | |
|     serializer_class = LoginSerializer
 | |
| 
 | |
|     def create(self, request, *args, **kwargs):
 | |
|         serializer = self.get_serializer(data=request.data)
 | |
|         serializer.is_valid(raise_exception=True)
 | |
|         vdata = serializer.validated_data
 | |
|         user = authenticate(username=vdata.get('username'),
 | |
|                             password=vdata.get('password'))
 | |
|         if user is not None:
 | |
|             login(request, user)
 | |
|             return Response()
 | |
|         raise ParseError(**USERNAME_OR_PASSWORD_WRONG)
 | |
| 
 | |
| 
 | |
| class LogoutView(APIView):
 | |
|     authentication_classes = []
 | |
|     permission_classes = []
 | |
| 
 | |
|     def post(self, request, *args, **kwargs):
 | |
|         """
 | |
|         退出登录
 | |
| 
 | |
| 
 | |
|         退出登录
 | |
|         """
 | |
|         logout(request)
 | |
|         return Response()
 |