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
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:
@ -14,7 +14,7 @@ use routes::azure_sso::SsoSession;
|
|||||||
use routes::ws::WsTicket;
|
use routes::ws::WsTicket;
|
||||||
use serde_json::{json, Value};
|
use serde_json::{json, Value};
|
||||||
use std::{net::SocketAddr, sync::Arc, time::Duration};
|
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.
|
/// Shared application state threaded through Axum.
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
@ -212,7 +212,11 @@ pub fn build_router(state: AppState) -> Router {
|
|||||||
// WebSocket browser endpoint — ticket-authenticated, outside JWT middleware
|
// WebSocket browser endpoint — ticket-authenticated, outside JWT middleware
|
||||||
.merge(routes::ws::ws_router())
|
.merge(routes::ws::ws_router())
|
||||||
// Serve React SPA
|
// 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(middleware::from_fn(request_id_middleware))
|
||||||
.layer(TraceLayer::new_for_http())
|
.layer(TraceLayer::new_for_http())
|
||||||
.with_state(state)
|
.with_state(state)
|
||||||
|
|||||||
Reference in New Issue
Block a user