dioxus icon indicating copy to clipboard operation
dioxus copied to clipboard

`axum-auth` example fails with `ServerError("AuthSessionLayer was not found")`

Open kaivol opened this issue 11 months ago • 0 comments

Problem

The axum-auth fullstack example fails with called `Result::unwrap()` on an `Err` value: ServerError("AuthSessionLayer was not found") when clicking the Login Test User button.

I suspect that this is caused by an incorrect handling of the DioxusServerContext. Debugging shows that the map returned by server_context().request_parts_mut().await.extensions (in the login() server function) is empty. The following diff (https://github.com/DioxusLabs/dioxus/commit/27a2237d09744e99514e6a41481ca75caebb5401) seems to fix the issue, but I'm not sure if that is the correct approach:

@@ -483,7 +483,7 @@ async fn handle_server_fns_inner(
             let referrer = req.headers().get(REFERER).cloned();
 
             // actually run the server fn
-            let mut res = service.run(req).await;
+            let mut res = ProvideServerContext::new(service.run(req), server_context.clone()).await;

Steps To Reproduce

Steps to reproduce the behavior:

  • Run dx serve --platform fullstack in \packages\fullstack\examples\axum-auth
  • Click the Login Test User button
  • Check browser console for errors

Environment:

  • Dioxus version: main (revision cba3abccf4ae8237c0cdd4b5740f0096cbb12531)
  • Rust version: rustc 1.75.0 (82e1608df 2023-12-21)
  • OS info: Windows 11
  • App platform: fullstack

Questionnaire

  • [ ] I'm interested in fixing this myself but don't know where to start
  • [ ] I would like to fix and I have a solution
  • [ ] I don't have time to fix this right now, but maybe later

kaivol avatar Mar 17 '24 15:03 kaivol