mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-20 20:39:55 +00:00
fix: 修复多处错误并优化用户体验
修复 ACCESS_TOKEN_INVALID 状态码从 403 改为 401 修复密码表单字段命名不一致问题 优化删除操作取消时的提示关闭逻辑 修复用户信息更新后未同步到 store 的问题 添加修改密码后的自动跳转登录功能 修复非 GET 请求成功时缺少成功提示的问题
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user