diff --git a/crates/core/src/filters/cookies.rs b/crates/core/src/filters/cookies.rs index 95078bd3..70982071 100644 --- a/crates/core/src/filters/cookies.rs +++ b/crates/core/src/filters/cookies.rs @@ -26,7 +26,7 @@ use headers::{Header, HeaderValue, SetCookie}; use serde::{de::DeserializeOwned, Deserialize, Serialize}; use thiserror::Error; use warp::{ - reject::{MissingCookie, Reject}, + reject::{InvalidHeader, MissingCookie, Reject}, Filter, Rejection, Reply, }; @@ -120,6 +120,8 @@ where { encrypted(options) .map(Some) + .recover(none_on_error::) + .unify() .recover(none_on_error::) .unify() .recover(none_on_error::>) diff --git a/crates/core/src/filters/session.rs b/crates/core/src/filters/session.rs index ccd882bc..8489e84f 100644 --- a/crates/core/src/filters/session.rs +++ b/crates/core/src/filters/session.rs @@ -19,7 +19,7 @@ use sqlx::{pool::PoolConnection, Executor, PgPool, Postgres}; use thiserror::Error; use tracing::warn; use warp::{ - reject::{MissingCookie, Reject}, + reject::{InvalidHeader, MissingCookie, Reject}, Filter, Rejection, }; @@ -134,6 +134,12 @@ async fn recover(rejection: Rejection) -> Result { // propagated } + if let Some(e) = rejection.find::() { + if e.name() == "cookie" { + return Err(warp::reject::custom(SessionLoadError::MissingCookie)); + } + } + if let Some(_e) = rejection.find::() { return Err(warp::reject::custom(SessionLoadError::MissingCookie)); }