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 !UnwindSafe for DistributedSessionManager
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more