pub struct SessionConfig {
pub ttl: Duration,
pub cookie_name: Arc<str>,
pub secure: bool,
pub same_site: SameSite,
pub http_only: bool,
pub path: Arc<str>,
pub max_custom_bytes: usize,
}Expand description
Session configuration controlling cookie attributes and session lifetime.
Use SessionConfig::builder() for ergonomic construction, or
SessionConfig::default() for production-safe defaults.
Fields§
§ttl: DurationSession time-to-live in the store and Max-Age on the cookie.
Cookie name (default: "axess.sid").
Prefer the __Host- prefix in production (e.g.,
"__Host-axess.sid"). Browsers refuse to set a __Host- cookie
unless Secure=true, Path="/", and the cookie has no Domain
attribute: together these prevent subdomain-scoped overwrites and
cross-host injection that the bare name does not. Using the prefix
without Secure=true panics in build() to fail fast on
misconfiguration. The __Secure- prefix is similar but only
requires Secure=true.
secure: boolSet the Secure flag on the cookie (default: true).
Set to false for local HTTP development.
same_site: SameSiteSameSite policy (default: Lax).
Lax is the right default for axess: the OAuth/OIDC callback flow
depends on the cookie being delivered on the IdP’s top-level GET
redirect back to the application, which Strict would strip. Lax
still blocks the cookie from cross-site sub-resource requests
(<img>, <iframe>, fetch() without credentials), but does
deliver the cookie on top-level navigations from a third-party
origin. Applications MUST therefore layer their own CSRF defence
on every state-changing POST/PUT/DELETE; the bundled
axess_core::middleware::csrf middleware does this, but it is opt-in.
http_only: boolSet the HttpOnly flag on the cookie (default: true).
path: Arc<str>Cookie Path attribute (default: "/").
max_custom_bytes: usizeMaximum size (in bytes) of serialized custom session data (default: 64 KiB).
Prevents session-bloat DoS where an attacker inflates the custom JSON
bag to exhaust storage. Set to 0 to disable the limit.
Implementations§
Source§impl SessionConfig
impl SessionConfig
Sourcepub fn builder() -> SessionConfigBuilder
pub fn builder() -> SessionConfigBuilder
Create a SessionConfigBuilder with production-safe defaults.
Trait Implementations§
Source§impl Clone for SessionConfig
impl Clone for SessionConfig
Source§fn clone(&self) -> SessionConfig
fn clone(&self) -> SessionConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SessionConfig
impl Debug for SessionConfig
Auto Trait Implementations§
impl Freeze for SessionConfig
impl RefUnwindSafe for SessionConfig
impl Send for SessionConfig
impl Sync for SessionConfig
impl Unpin for SessionConfig
impl UnsafeUnpin for SessionConfig
impl UnwindSafe for SessionConfig
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.