Skip to main content

SessionManager

Struct SessionManager 

Source
pub struct SessionManager { /* private fields */ }
Expand description

Session manager for handling user sessions.

§Example

use auth_framework::auth_modular::SessionManager;
use std::sync::Arc;

let mgr = SessionManager::new(storage.clone());
let sid = mgr.create_session("user-1", Duration::from_secs(3600), None, None).await?;

Implementations§

Source§

impl SessionManager

Source

pub fn new(storage: Arc<dyn AuthStorage>) -> Self

Create a new session manager.

§Example
use auth_framework::auth_modular::SessionManager;
let mgr = SessionManager::new(storage.clone());
Source

pub fn set_distributed_store(&mut self, store: Arc<dyn DistributedSessionStore>)

Replace the distributed session store (multi-node deployments).

§Example
mgr.set_distributed_store(Arc::new(RedisSessionStore::new("redis://...").await?));
Source

pub async fn create_session( &self, user_id: &str, expires_in: Duration, ip_address: Option<String>, user_agent: Option<String>, ) -> Result<String>

Create a new session.

§Example
let sid = mgr.create_session(
    "user-1",
    Duration::from_secs(3600),
    Some("127.0.0.1".into()),
    Some("Mozilla/5.0".into()),
).await?;
Source

pub async fn get_session(&self, session_id: &str) -> Result<Option<SessionData>>

Get session information.

Returns None if the session does not exist or has expired.

§Example
if let Some(session) = mgr.get_session("sess_abc").await? {
    println!("user: {}", session.user_id);
}
Source

pub async fn delete_session(&self, session_id: &str) -> Result<()>

Delete a session.

§Example
mgr.delete_session("sess_abc").await?;
Source

pub async fn update_session_activity(&self, session_id: &str) -> Result<()>

Update session last activity timestamp.

§Example
mgr.update_session_activity("sess_abc").await?;
Source

pub async fn get_user_sessions( &self, user_id: &str, ) -> Result<Vec<(String, SessionData)>>

Get all active (non-expired) sessions for a user.

§Example
let sessions = mgr.get_user_sessions("user-1").await?;
for (id, data) in &sessions {
    println!("session {}: ip={:?}", id, data.ip_address);
}
Source

pub async fn delete_user_sessions(&self, user_id: &str) -> Result<()>

Delete all sessions for a user.

§Example
mgr.delete_user_sessions("user-1").await?;
Source

pub async fn cleanup_expired_sessions(&self) -> Result<()>

Clean up expired sessions from storage.

§Example
mgr.cleanup_expired_sessions().await?;
Source

pub async fn validate_session(&self, session_id: &str) -> Result<Option<String>>

Validate a session and return the owning user ID.

Returns None if the session is missing or expired.

§Example
if let Some(user_id) = mgr.validate_session("sess_abc").await? {
    println!("session belongs to {}", user_id);
}
Source

pub async fn extend_session( &self, session_id: &str, additional_time: Duration, ) -> Result<()>

Extend session expiration by additional_time.

§Example
mgr.extend_session("sess_abc", Duration::from_secs(1800)).await?;
Source

pub async fn create_session_limited( &self, user_id: &str, expires_in: Duration, ip_address: Option<String>, user_agent: Option<String>, ) -> Result<(String, u64)>

Create a new session with resource-limit guards.

Enforces a global cap of 100 000 total sessions and a per-user cap of 50 sessions to prevent DoS / resource exhaustion.

Returns (session_id, new_total_count) so the caller can update monitoring.

§Example
let (sid, total) = mgr.create_session_limited(
    "user-1", Duration::from_secs(3600), None, None,
).await?;
println!("created session {} (total active: {})", sid, total);
Source

pub async fn count_active_sessions(&self) -> Result<u64>

Count the number of currently active sessions.

Used for security audit statistics.

§Example
let n = mgr.count_active_sessions().await?;
println!("{} active sessions", n);
Source

pub async fn get_session_security_metrics( &self, ) -> Result<HashMap<String, Value>>

Get security metrics for sessions.

§Example
let metrics = mgr.get_session_security_metrics().await?;
println!("active: {:?}", metrics.get("active_sessions"));
Source

pub async fn coordinate_distributed_sessions( &self, ) -> Result<SessionCoordinationStats>

Coordinate session state across distributed instances.

§Example
let stats = mgr.coordinate_distributed_sessions().await?;
println!("synced: {}", stats.synchronized_sessions);
Source

pub async fn synchronize_session(&self, session_id: &str) -> Result<()>

Synchronize a specific session with remote instances.

§Example
mgr.synchronize_session("sess_abc").await?;

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<'a, T, E> AsTaggedExplicit<'a, E> for T
where T: 'a,

Source§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

Source§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

Source§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more