Skip to main content

SessionStore

Trait SessionStore 

Source
pub trait SessionStore: Send + Sync {
    // Required methods
    fn put(&self, rec: SessionRecord) -> Result<(), StoreError>;
    fn get(&self, token: &str) -> Result<Option<SessionRecord>, StoreError>;
    fn touch(&self, token: &str, now: u64) -> Result<(), StoreError>;
    fn revoke(&self, token: &str) -> Result<(), StoreError>;
    fn revoke_subject(&self, subject: &str) -> Result<usize, StoreError>;
    fn recent_logins(
        &self,
        subject: &str,
    ) -> Result<Vec<LoginPoint>, StoreError>;
    fn record_login(
        &self,
        subject: &str,
        point: LoginPoint,
    ) -> Result<(), StoreError>;
    fn purge_expired(&self, now: u64) -> Result<usize, StoreError>;
}
Expand description

会话存储后端。

guard 按值持有 store(SessionGuard<S> 的字段就是 S),而本 trait 没有为 Arc<T> 提供 blanket impl —— 所以 Arc<MemoryStore> 不是 SessionStore,两个 guard 想共享同一份存储得包一层 newtype 并转发全部方法。 多线程场景不必如此:SessionGuard<S> 本身是 Send + Sync,共享一个 Arc<SessionGuard<MemoryStore>>(见 examples/axum_middleware.rs)即可。

Required Methods§

Source

fn put(&self, rec: SessionRecord) -> Result<(), StoreError>

Source

fn get(&self, token: &str) -> Result<Option<SessionRecord>, StoreError>

原样返回记录,不过滤过期。过期判定归 guard —— 若此处对过期记录返回 None,verify 将无法区分 TokenExpired 与 TokenUnknown。

Source

fn touch(&self, token: &str, now: u64) -> Result<(), StoreError>

Source

fn revoke(&self, token: &str) -> Result<(), StoreError>

Source

fn revoke_subject(&self, subject: &str) -> Result<usize, StoreError>

吊销某 subject 的全部会话,返回受影响条数。

Source

fn recent_logins(&self, subject: &str) -> Result<Vec<LoginPoint>, StoreError>

该 subject 的登录历史,按时间升序(最旧在前)。

Source

fn record_login( &self, subject: &str, point: LoginPoint, ) -> Result<(), StoreError>

Source

fn purge_expired(&self, now: u64) -> Result<usize, StoreError>

清除已过期记录,并回收超过 LOGIN_HISTORY_KEEP_SECS 未再登录的 subject 的登录历史;返回清除的会话条数。

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§