Skip to content
Discussion options

You must be logged in to vote

Solved

// Request → Claims extractor → process_claims → handler
pub fn get_router() -> Router<AppState> {
    let router: Router<AppState> = Router::new()
    .route(....)
    .route_layer(middleware::from_fn(process_claims))
    .route_layer(middleware::from_extractor::<Claims>());
    router
}

/// Middleware
pub async fn process_claims(
    c: Claims,
    mut req: Request,
    next: Next,
) -> Result<Response, StatusCode> {
    if c.is_auth() {
        req.extensions_mut().insert(c.clone());
        return Ok(next.run(req).await);
    }
    tracing::error!("Token Middleware - Missing Claims");
    Err(StatusCode::INTERNAL_SERVER_ERROR)
}

Tower_http layers work in first in last out

.ro…

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by amitnos123
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
1 participant