From 1d0861e0e706987a43d33a51c8f27490050a3f0a Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 27 Aug 2025 15:47:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E7=9B=B4=E6=8E=A5use?= =?UTF-8?q?rid=E8=8E=B7=E5=8F=96token=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/auth1/serializers.py | 4 ++++ apps/auth1/urls.py | 6 ++++-- apps/auth1/views.py | 26 +++++++++++++++++++++++++- 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/apps/auth1/serializers.py b/apps/auth1/serializers.py index 2732bf2a..e0272603 100755 --- a/apps/auth1/serializers.py +++ b/apps/auth1/serializers.py @@ -20,6 +20,10 @@ class WxCodeSerializer(serializers.Serializer): code = serializers.CharField(label="code") +class UserIdSerializer(serializers.Serializer): + user_id = serializers.CharField(label="用户id") + + class PwResetSerializer(serializers.Serializer): phone = serializers.CharField(label="手机号") code = serializers.CharField(label="验证码") diff --git a/apps/auth1/urls.py b/apps/auth1/urls.py index e2244f90..f73bc67e 100755 --- a/apps/auth1/urls.py +++ b/apps/auth1/urls.py @@ -3,7 +3,8 @@ from django.urls import path from rest_framework_simplejwt.views import TokenRefreshView from apps.auth1.views import (CodeLogin, LoginView, LogoutView, PwResetView, - SecretLogin, SendCode, TokenBlackView, WxLogin, WxmpLogin, TokenLoginView, FaceLoginView) + SecretLogin, SendCode, TokenBlackView, WxLogin, WxmpLogin, + TokenLoginView, FaceLoginView, UserIdLogin) API_BASE_URL = 'api/auth/' urlpatterns = [ @@ -18,5 +19,6 @@ urlpatterns = [ path(API_BASE_URL + 'sms_code/', SendCode.as_view(), name='sms_code_send'), path(API_BASE_URL + 'logout/', LogoutView.as_view(), name='session_logout'), path(API_BASE_URL + 'reset_password/', PwResetView.as_view(), name='reset_password'), - path(API_BASE_URL + 'login_face/', FaceLoginView.as_view(), name='face_login') + path(API_BASE_URL + 'login_face/', FaceLoginView.as_view(), name='face_login'), + path(API_BASE_URL + 'login_userid/', UserIdLogin.as_view(), name='userid_login'), ] diff --git a/apps/auth1/views.py b/apps/auth1/views.py index fd40936d..e2fbded5 100755 --- a/apps/auth1/views.py +++ b/apps/auth1/views.py @@ -23,7 +23,8 @@ from apps.auth1.serializers import FaceLoginSerializer from apps.auth1.serializers import (CodeLoginSerializer, LoginSerializer, - PwResetSerializer, SecretLoginSerializer, SendCodeSerializer, WxCodeSerializer) + PwResetSerializer, SecretLoginSerializer, + SendCodeSerializer, WxCodeSerializer, UserIdSerializer) from apps.system.models import User from rest_framework_simplejwt.views import TokenObtainPairView from apps.auth1.authentication import get_user_by_username_or @@ -234,6 +235,29 @@ class SecretLogin(CreateAPIView): return Response(ret) raise ParseError('登录失败') +class UserIdLogin(CreateAPIView): + """直接UserId登录(危险操作) + + 直接UserId登录 + """ + authentication_classes = [] + permission_classes = [] + serializer_class = UserIdSerializer + + def post(self, request): + sr = UserIdSerializer(data=request.data) + sr.is_valid(raise_exception=True) + vdata = sr.validated_data + userid = vdata['user_id'] + try: + user = User.objects.get(id=userid) + except Exception as e: + raise ParseError(f'用户不存在-{e}') + if user: + ret = get_tokens_for_user(user) + return Response(ret) + raise ParseError('登录失败') + class PwResetView(CreateAPIView): """重置密码