pub(crate) async fn admin_guard(req: Request, next: Next) -> ResponseExpand description
Axum 中间件:/admin* 的 SSR 层认证守卫。
未登录访问后台时,服务端直接 302 跳转 /login,根本不进入 Dioxus
SSR 渲染器。此前后台鉴权完全在客户端 WASM 完成(SSR 渲染骨架屏 → WASM
下载/编译 → hydrate → 异步 get_current_user() → 客户端 navigator.push),
整条链串行,未登录用户首屏要“空白好久“才跳登录。
- 只匹配
/admin*,其它路径(/login、公开页、/api/*)直接放行。 - 复用
get_user_by_token:命中内存缓存 + 校验session_generation(封禁/降级后旧 session 立即失效),与客户端鉴权同一套语义。 - DB 错误时 fail-open(放行进入 SSR):避免数据库抖动把已登录的
管理员也踢到登录页;客户端
AdminLayout仍有兜底校验。 /admin与/login本就不进cache_control_for_path缓存,302 不会被缓存。