Private
Public Access
1
0

fix: add SPA fallback route to prevent F5 refresh crash
Some checks failed
CI Pipeline / Rust Format Check (push) Failing after 5s
CI Pipeline / Clippy Lints (push) Successful in 46s
CI Pipeline / Rust Unit Tests (push) Successful in 1m1s
CI Pipeline / Security Audit (push) Successful in 4s
CI Pipeline / Frontend Lint & Type Check (push) Successful in 14s
CI Pipeline / Build .deb & Release (push) Has been skipped

This commit is contained in:
2026-05-07 02:23:21 +00:00
parent f0bd431779
commit 5e63245f65

View File

@ -14,7 +14,7 @@ use routes::azure_sso::SsoSession;
use routes::ws::WsTicket;
use serde_json::{json, Value};
use std::{net::SocketAddr, sync::Arc, time::Duration};
use tower_http::{services::ServeDir, trace::TraceLayer};
use tower_http::{services::{ServeDir, ServeFile}, trace::TraceLayer};
/// Shared application state threaded through Axum.
#[derive(Clone)]
@ -212,7 +212,11 @@ pub fn build_router(state: AppState) -> Router {
// WebSocket browser endpoint — ticket-authenticated, outside JWT middleware
.merge(routes::ws::ws_router())
// Serve React SPA
.fallback_service(ServeDir::new(&static_dir).append_index_html_on_directories(true))
.fallback_service(
ServeDir::new(&static_dir)
.append_index_html_on_directories(true)
.fallback(ServeFile::new(format!("{}/index.html", static_dir))),
)
.layer(middleware::from_fn(request_id_middleware))
.layer(TraceLayer::new_for_http())
.with_state(state)