修改登录地址

This commit is contained in:
caoqianming 2022-01-25 09:46:35 +08:00
parent e5a9c46e2e
commit a5984ee239
12 changed files with 84 additions and 12 deletions

View File

View File

@ -0,0 +1,4 @@
from django.contrib import admin
from rest_framework_simplejwt.views import (TokenObtainPairView,
TokenRefreshView)
# Register your models here.

View File

@ -0,0 +1,7 @@
from django.apps import AppConfig
class AuthConfig(AppConfig):
name = 'apps.auth1'
verbose_name = "认证"

View File

@ -0,0 +1,3 @@
from django.db import models
# Create your models here.

View File

@ -0,0 +1,5 @@
from rest_framework import serializers
class LoginSerializer(serializers.Serializer):
username = serializers.CharField(label="用户名")
password = serializers.CharField(label="密码")

View File

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

View File

@ -0,0 +1,12 @@
from django.urls import path
from rest_framework_simplejwt.views import (TokenObtainPairView,
TokenRefreshView)
from apps.auth1.views import LoginView, LogoutView, TokenBlackView
urlpatterns = [
path('token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
path('token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path('token/black/', TokenBlackView.as_view(), name='token_black'),
path('login/', LoginView.as_view(), name='api_login'),
path('logout/', LogoutView.as_view(), name='api_logout')
]

View File

@ -0,0 +1,47 @@
from django.shortcuts import render
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.serializers import LoginSerializer
# Create your views here.
class TokenBlackView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request, *args, **kwargs): # 可将token加入黑名单
return Response(status=status.HTTP_200_OK)
class LoginView(CreateAPIView):
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()
return Response('登录失败', status=status.HTTP_400_BAD_REQUEST)
class LogoutView(APIView):
authentication_classes = []
permission_classes = []
def post(self, request, *args, **kwargs):
"""
退出登录
"""
logout(request)
return Response()

View File

@ -48,12 +48,6 @@ class TaskList(APIView):
tasks = list(sorted(name for name in celery_app.tasks if not name.startswith('celery.')))
return Response(tasks)
class LogoutView(APIView):
permission_classes = []
def get(self, request, *args, **kwargs): # 可将token加入黑名单
return Response(status=status.HTTP_200_OK)
class PTaskViewSet(OptimizationMixin, ModelViewSet):
perms_map = {'get': '*', 'post': 'ptask_create',
'put': 'ptask_update', 'delete': 'ptask_delete'}

View File

@ -48,6 +48,7 @@ INSTALLED_APPS = [
'simple_history',
'apps.system',
'apps.monitor',
'apps.auth1',
'apps.pum',
'apps.em',
'apps.hrm',

View File

@ -13,7 +13,7 @@ Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from apps.system.views import FileViewSet, LogoutView
from apps.system.views import FileViewSet
from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
@ -23,8 +23,6 @@ from drf_yasg import openapi
from drf_yasg.views import get_schema_view
from rest_framework import routers
from rest_framework.documentation import include_docs_urls
from rest_framework_simplejwt.views import (TokenObtainPairView,
TokenRefreshView)
from django.views.generic import TemplateView
from utils.view import GenSignature, UpdateDevelop
@ -53,12 +51,10 @@ urlpatterns = [
path('api/redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
# api
path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path('api/token/black/', LogoutView.as_view(), name='token_black'),
path('api/file/', include(router.urls)),
path('api/system/', include('apps.system.urls')),
path('api/monitor/', include('apps.monitor.urls')),
path('api/auth/', include('apps.auth1.urls')),
path('api/pum/', include('apps.pum.urls')),
path('api/em/', include('apps.em.urls')),
path('api/hrm/', include('apps.hrm.urls')),