diff --git a/config/views/miniapp_config.py b/config/views/miniapp_config.py index e31a194..e1b7a92 100644 --- a/config/views/miniapp_config.py +++ b/config/views/miniapp_config.py @@ -61,6 +61,7 @@ import logging logger = logging.getLogger(__name__) class GetDynamicConfigView(APIView): + authentication_classes = () permission_classes = [AllowAny] parser_classes = [JSONParser] diff --git a/jituan/views.py b/jituan/views.py index 86779bb..60f87c1 100644 --- a/jituan/views.py +++ b/jituan/views.py @@ -48,10 +48,18 @@ class ClubWechatLoginView(APIView): 多俱乐部微信小程序登录(新接口,旧 /yonghu/wechatlogin 不变)。 POST /jituan/auth/wechat-login body: { code, club_id?, app_id? } + + 注意:必须完全跳过 JWT/权限/限流。 + DRF 在 authentication_classes=[] 时若仍抛 AuthenticationFailed, + 会因无 WWW-Authenticate 头被改写成 HTTP 403(前端显示「权限不足」)。 """ - authentication_classes = [] # 登录不走 JWT,避免旧 Token 触发 403 - throttle_classes = [AnonRateThrottle] - permission_classes = [AllowAny] + authentication_classes = () + permission_classes = () + throttle_classes = () + + def initial(self, request, *args, **kwargs): + # 登录接口不做任何鉴权/权限/限流,避免 403「权限不足」 + return def post(self, request): code = (request.data.get('code') or '').strip() diff --git a/users/views/auth.py b/users/views/auth.py index 1adf3b9..37566a8 100644 --- a/users/views/auth.py +++ b/users/views/auth.py @@ -103,8 +103,13 @@ class WechatMiniProgramLoginView(APIView): """ 微信小程序登录接口 """ - throttle_classes = [AnonRateThrottle] - permission_classes = [AllowAny] + authentication_classes = () + permission_classes = () + throttle_classes = () + + def initial(self, request, *args, **kwargs): + # 与 /jituan/auth/wechat-login 一致:登录绝不走 JWT,避免 403「权限不足」 + return def post(self, request): try: