feat: 2026-07-11 全量更新 - 代办集成+会议室预定+知识迭代修复+UI统一+Bug修复
== 已部署上线 (9项) == - 代办事项真实数据源集成 (企微审批API 8bug修复链) - H5/坐席端 Logo样式统一+绿色背景 - 视频引导页修复 (localStorage key v2) - 坐席端 v9 Vue版本修复 (ElMessage._context) - 截图按钮 v10 修复 (getDisplayMedia user gesture) - 扫码样式恢复+H5扫码登录跳转修复 - H5截图快捷键提示 == 代码完成待部署 (3项) == - 知识迭代3Bug修复 (#8 POST端点/#7 MERGE幂等/#6 过期检查) - 会议室预定-小鱼易联终端 (40文件, 40/40测试通过) - IT资产升级审批推送 (asset_service.py) == 需求文档 (2项) == - 坐席端AI辅助消息框-PRD (4项新功能确认) - 坐席端布局优化建议 v2.0 (7天计划) == 新增文档 == - 日报-2026-07-11.md - 知识迭代Bug修复报告-20260711.md - 会议室预定-部署指南.md - CHANGELOG.md 更新 == 测试 == - test_todo_integration.py: 40/40 - test_meetingroom.py: 40/40 - test_bugfix_ki_suggestions.py: 21/21
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
# 3. require_admin: 管理员权限验证
|
||||
# =============================================================================
|
||||
|
||||
import hashlib
|
||||
import inspect
|
||||
import json
|
||||
import logging
|
||||
@@ -196,6 +197,10 @@ async def cleanup_shared_services():
|
||||
logger.info("共享服务清理完成")
|
||||
|
||||
|
||||
# Token 黑名单 Key 前缀(与 auth.py 中保持一致)
|
||||
TOKEN_BLACKLIST_PREFIX = "token:blacklist:"
|
||||
|
||||
|
||||
async def get_current_user(
|
||||
credentials: HTTPAuthorizationCredentials = Depends(security),
|
||||
) -> UserInfo:
|
||||
@@ -217,6 +222,16 @@ async def get_current_user(
|
||||
# 获取 Redis 连接
|
||||
redis_client = await get_redis()
|
||||
|
||||
# 检查 Token 黑名单(用户已主动登出)
|
||||
token_hash = hashlib.sha256(token.encode()).hexdigest()
|
||||
blacklist_key = f"{TOKEN_BLACKLIST_PREFIX}{token_hash}"
|
||||
if await redis_client.get(blacklist_key):
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_401_UNAUTHORIZED,
|
||||
detail="Token 已失效,请重新登录",
|
||||
headers={"WWW-Authenticate": "Bearer"},
|
||||
)
|
||||
|
||||
# 创建 Token 服务
|
||||
token_service = TokenService(redis_client)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user