fix: 修复多处错误并优化用户体验

修复 ACCESS_TOKEN_INVALID 状态码从 403 改为 401
修复密码表单字段命名不一致问题
优化删除操作取消时的提示关闭逻辑
修复用户信息更新后未同步到 store 的问题
添加修改密码后的自动跳转登录功能
修复非 GET 请求成功时缺少成功提示的问题
This commit is contained in:
zhangtao
2025-07-27 00:26:09 +08:00
parent e7ebbf5479
commit 23d1e7adce
18 changed files with 389 additions and 727 deletions
+4 -4
View File
@@ -80,9 +80,9 @@ async def get_current_user(
# 获取用户信息
user = await UserCRUD(auth).get_by_username_crud(username=username)
if not user:
raise CustomException(msg="用户不存在", status_code=403)
raise CustomException(msg="用户不存在", status_code=401)
if not user.status:
raise CustomException(msg="用户已被停用", status_code=403)
raise CustomException(msg="用户已被停用", status_code=401)
# 设置请求上下文
request.scope["user_id"] = user.id
@@ -156,11 +156,11 @@ class AuthPermission:
# 严格模式:要求所有权限都满足
if not all(perm in user_permissions for perm in self.permissions):
logger.error(f"用户缺少所需的权限: {self.permissions}")
raise CustomException(msg="无权限操作")
raise CustomException(msg="无权限操作", status_code=403)
else:
# 非严格模式:满足任一权限即可
if not any(perm in user_permissions for perm in self.permissions):
logger.error(f"用户缺少任何所需的权限: {self.permissions}")
raise CustomException(msg="无权限操作")
raise CustomException(msg="无权限操作", status_code=403)
return auth
+5 -5
View File
@@ -88,7 +88,7 @@ def create_access_token(payload: JWTPayloadSchema) -> str:
def decode_access_token(token: str) -> JWTPayloadSchema:
"""解析JWT访问令牌"""
if not token:
raise CustomException(msg="认证不存在,请重新登录", status_code=403)
raise CustomException(msg="认证不存在,请重新登录", status_code=401)
try:
payload = jwt.decode(
@@ -99,15 +99,15 @@ def decode_access_token(token: str) -> JWTPayloadSchema:
online_user_info = payload.get("sub")
if not online_user_info:
raise CustomException(msg="无效认证,请重新登录", status_code=403)
raise CustomException(msg="无效认证,请重新登录", status_code=401)
return JWTPayloadSchema(**payload)
except (jwt.InvalidSignatureError, jwt.DecodeError):
raise CustomException(msg="无效认证,请重新登录", status_code=403)
raise CustomException(msg="无效认证,请重新登录", status_code=401)
except jwt.ExpiredSignatureError:
raise CustomException(msg="认证已过期,请重新登录", status_code=403)
raise CustomException(msg="认证已过期,请重新登录", status_code=401)
except jwt.InvalidTokenError:
raise CustomException(msg="token已失效,请重新登录", status_code=403)
raise CustomException(msg="token已失效,请重新登录", status_code=401)