DistributedSessionManager

Struct DistributedSessionManager 

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

Distributed session manager 分布式 Session 管理器

Manages distributed sessions and service authentication 管理分布式 Sessions 和服务认证

Implementations§

Source§

impl DistributedSessionManager

Source

pub fn new( storage: Arc<dyn DistributedSessionStorage>, service_id: String, session_timeout: Duration, ) -> Self

Create a new distributed session manager 创建新的分布式 Session 管理器

§Arguments | 参数
  • storage - Session storage implementation | Session 存储实现
  • service_id - ID of this service | 此服务的 ID
  • session_timeout - Default session timeout | 默认 Session 超时时间
§Example | 示例
let storage = Arc::new(MyDistributedStorage::new());
let manager = DistributedSessionManager::new(
    storage,
    "my-service".to_string(),
    Duration::from_secs(3600),
);
Source

pub async fn register_service(&self, credential: ServiceCredential)

Register a service for inter-service authentication 注册服务以进行服务间认证

§Arguments | 参数
  • credential - Service credential information | 服务凭证信息
§Example | 示例
let credential = ServiceCredential {
    service_id: "api-gateway".to_string(),
    service_name: "API Gateway".to_string(),
    secret_key: "secret123".to_string(),
    created_at: Utc::now(),
    permissions: vec!["read".to_string(), "write".to_string()],
};
manager.register_service(credential).await;
Source

pub async fn verify_service( &self, service_id: &str, secret: &str, ) -> Result<ServiceCredential, SaTokenError>

Verify a service’s credentials 验证服务的凭证

§Arguments | 参数
  • service_id - Service identifier | 服务标识符
  • secret - Service secret key | 服务密钥
§Returns | 返回值
  • Ok(ServiceCredential) - Service authenticated | 服务已认证
  • Err(PermissionDenied) - Invalid credentials | 凭证无效
§Example | 示例
match manager.verify_service("api-gateway", "secret123").await {
    Ok(cred) => println!("Service {} verified", cred.service_name),
    Err(e) => println!("Verification failed: {}", e),
}
Source

pub async fn create_session( &self, login_id: String, token: String, ) -> Result<DistributedSession, SaTokenError>

Create a new distributed session 创建新的分布式 Session

§Arguments | 参数
  • login_id - User login ID | 用户登录 ID
  • token - Authentication token | 认证 Token
§Returns | 返回值
  • Ok(DistributedSession) - Session created | Session 已创建
  • Err(SaTokenError) - Creation failed | 创建失败
§Example | 示例
let session = manager.create_session(
    "user123".to_string(),
    "token456".to_string(),
).await?;
println!("Session created: {}", session.session_id);
Source

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

Get a session by ID 通过 ID 获取 Session

§Arguments | 参数
  • session_id - Session identifier | Session 标识符
§Returns | 返回值
  • Ok(DistributedSession) - Session found | 找到 Session
  • Err(SessionNotFound) - Session not found | 未找到 Session
§Example | 示例
let session = manager.get_session("session-id-123").await?;
println!("User: {}", session.login_id);
Source

pub async fn update_session( &self, session: DistributedSession, ) -> Result<(), SaTokenError>

Update an existing session 更新现有 Session

§Arguments | 参数
  • session - Updated session data | 更新后的 Session 数据
§Example | 示例
let mut session = manager.get_session("session-id").await?;
session.attributes.insert("role".to_string(), "admin".to_string());
manager.update_session(session).await?;
Source

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

Delete a session 删除 Session

§Arguments | 参数
  • session_id - Session identifier | Session 标识符
§Example | 示例
manager.delete_session("session-id-123").await?;
Source

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

Refresh a session (update last access time) 刷新 Session(更新最后访问时间)

§Arguments | 参数
  • session_id - Session identifier | Session 标识符
§Example | 示例
manager.refresh_session("session-id-123").await?;
Source

pub async fn set_attribute( &self, session_id: &str, key: String, value: String, ) -> Result<(), SaTokenError>

Set a session attribute 设置 Session 属性

§Arguments | 参数
  • session_id - Session identifier | Session 标识符
  • key - Attribute key | 属性键
  • value - Attribute value | 属性值
§Example | 示例
manager.set_attribute("session-id", "theme".to_string(), "dark".to_string()).await?;
Source

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

Get a session attribute 获取 Session 属性

§Arguments | 参数
  • session_id - Session identifier | Session 标识符
  • key - Attribute key | 属性键
§Returns | 返回值
  • Some(value) - Attribute found | 找到属性
  • None - Attribute not found | 未找到属性
§Example | 示例
if let Some(theme) = manager.get_attribute("session-id", "theme").await? {
    println!("Theme: {}", theme);
}
Source

pub async fn remove_attribute( &self, session_id: &str, key: &str, ) -> Result<(), SaTokenError>

Remove a session attribute 移除 Session 属性

§Arguments | 参数
  • session_id - Session identifier | Session 标识符
  • key - Attribute key | 属性键
§Example | 示例
manager.remove_attribute("session-id", "temp_data").await?;
Source

pub async fn get_sessions_by_login_id( &self, login_id: &str, ) -> Result<Vec<DistributedSession>, SaTokenError>

Get all sessions for a specific user 获取特定用户的所有 Sessions

§Arguments | 参数
  • login_id - User login ID | 用户登录 ID
§Returns | 返回值

Vector of sessions | Sessions 向量

§Example | 示例
let sessions = manager.get_sessions_by_login_id("user123").await?;
println!("User has {} active sessions", sessions.len());
Source

pub async fn delete_all_sessions( &self, login_id: &str, ) -> Result<(), SaTokenError>

Delete all sessions for a specific user 删除特定用户的所有 Sessions

§Arguments | 参数
  • login_id - User login ID | 用户登录 ID
§Example | 示例
manager.delete_all_sessions("user123").await?;

Auto Trait Implementations§

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

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
§

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

§

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> Same for T

Source§

type Output = T

Should always be Self
§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.
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