pub struct DistributedSessionManager { /* private fields */ }Expand description
Distributed session manager 分布式 Session 管理器
Manages distributed sessions and service authentication 管理分布式 Sessions 和服务认证
Implementations§
Source§impl DistributedSessionManager
impl DistributedSessionManager
Sourcepub fn new(
storage: Arc<dyn DistributedSessionStorage>,
service_id: String,
session_timeout: Duration,
) -> Self
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 | 此服务的 IDsession_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),
);Sourcepub async fn register_service(&self, credential: ServiceCredential)
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;Sourcepub async fn verify_service(
&self,
service_id: &str,
secret: &str,
) -> Result<ServiceCredential, SaTokenError>
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),
}Sourcepub async fn create_session(
&self,
login_id: String,
token: String,
) -> Result<DistributedSession, SaTokenError>
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 | 用户登录 IDtoken- 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);Sourcepub async fn get_session(
&self,
session_id: &str,
) -> Result<DistributedSession, SaTokenError>
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 | 找到 SessionErr(SessionNotFound)- Session not found | 未找到 Session
§Example | 示例
ⓘ
let session = manager.get_session("session-id-123").await?;
println!("User: {}", session.login_id);Sourcepub async fn update_session(
&self,
session: DistributedSession,
) -> Result<(), SaTokenError>
pub async fn update_session( &self, session: DistributedSession, ) -> Result<(), SaTokenError>
Sourcepub async fn delete_session(&self, session_id: &str) -> Result<(), SaTokenError>
pub async fn delete_session(&self, session_id: &str) -> Result<(), SaTokenError>
Sourcepub async fn refresh_session(
&self,
session_id: &str,
) -> Result<(), SaTokenError>
pub async fn refresh_session( &self, session_id: &str, ) -> Result<(), SaTokenError>
Sourcepub async fn set_attribute(
&self,
session_id: &str,
key: String,
value: String,
) -> Result<(), SaTokenError>
pub async fn set_attribute( &self, session_id: &str, key: String, value: String, ) -> Result<(), SaTokenError>
Sourcepub async fn get_attribute(
&self,
session_id: &str,
key: &str,
) -> Result<Option<String>, SaTokenError>
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);
}Sourcepub async fn remove_attribute(
&self,
session_id: &str,
key: &str,
) -> Result<(), SaTokenError>
pub async fn remove_attribute( &self, session_id: &str, key: &str, ) -> Result<(), SaTokenError>
Sourcepub async fn get_sessions_by_login_id(
&self,
login_id: &str,
) -> Result<Vec<DistributedSession>, SaTokenError>
pub async fn get_sessions_by_login_id( &self, login_id: &str, ) -> Result<Vec<DistributedSession>, SaTokenError>
Sourcepub async fn delete_all_sessions(
&self,
login_id: &str,
) -> Result<(), SaTokenError>
pub async fn delete_all_sessions( &self, login_id: &str, ) -> Result<(), SaTokenError>
Auto Trait Implementations§
impl Freeze for DistributedSessionManager
impl !RefUnwindSafe for DistributedSessionManager
impl Send for DistributedSessionManager
impl Sync for DistributedSessionManager
impl Unpin for DistributedSessionManager
impl UnsafeUnpin for DistributedSessionManager
impl !UnwindSafe for DistributedSessionManager
Blanket Implementations§
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
Mutably borrows from an owned value. Read more