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,
) -> DistributedSessionManager
pub fn new( storage: Arc<dyn DistributedSessionStorage>, service_id: String, session_timeout: Duration, ) -> DistributedSessionManager
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoCollection<T> for T
impl<T> IntoCollection<T> for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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 moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);