pub struct SaTokenManager {
pub config: SaTokenConfig,
/* private fields */
}Expand description
sa-token 管理器
Fields§
§config: SaTokenConfigImplementations§
Source§impl SaTokenManager
impl SaTokenManager
Sourcepub fn new(storage: Arc<dyn SaStorage>, config: SaTokenConfig) -> SaTokenManager
pub fn new(storage: Arc<dyn SaStorage>, config: SaTokenConfig) -> SaTokenManager
创建新的管理器实例
pub fn with_online_manager(self, manager: Arc<OnlineManager>) -> SaTokenManager
pub fn with_distributed_manager( self, manager: Arc<DistributedSessionManager>, ) -> SaTokenManager
pub fn online_manager(&self) -> Option<&Arc<OnlineManager>>
pub fn distributed_manager(&self) -> Option<&Arc<DistributedSessionManager>>
Sourcepub fn event_bus(&self) -> &SaTokenEventBus
pub fn event_bus(&self) -> &SaTokenEventBus
获取事件总线的引用
Sourcepub async fn login(
&self,
login_id: impl Into<String>,
) -> Result<TokenValue, SaTokenError>
pub async fn login( &self, login_id: impl Into<String>, ) -> Result<TokenValue, SaTokenError>
登录:为指定账号创建 token
Sourcepub async fn login_with_options(
&self,
login_id: impl Into<String>,
login_type: Option<String>,
device: Option<String>,
extra_data: Option<Value>,
nonce: Option<String>,
expire_time: Option<DateTime<Utc>>,
) -> Result<TokenValue, SaTokenError>
pub async fn login_with_options( &self, login_id: impl Into<String>, login_type: Option<String>, device: Option<String>, extra_data: Option<Value>, nonce: Option<String>, expire_time: Option<DateTime<Utc>>, ) -> Result<TokenValue, SaTokenError>
登录:为指定账号创建 token(支持自定义 TokenInfo 字段)
§参数 | Parameters
login_id- 登录用户 ID | Login user IDlogin_type- 登录类型(如 “user”, “admin”)| Login type (e.g., “user”, “admin”)device- 设备标识 | Device identifierextra_data- 额外数据 | Extra datanonce- 防重放攻击的一次性令牌 | One-time token for replay attack preventionexpire_time- 自定义过期时间(如果为 None,则使用配置的过期时间)| Custom expiration time (if None, use configured timeout)
§示例 | Example
ⓘ
let token = manager.login_with_options(
"user_123",
Some("admin".to_string()),
Some("iPhone".to_string()),
Some(json!({"ip": "192.168.1.1"})),
Some("nonce_123".to_string()),
None,
).await?;Sourcepub async fn login_with_token_info(
&self,
token_info: TokenInfo,
) -> Result<TokenValue, SaTokenError>
pub async fn login_with_token_info( &self, token_info: TokenInfo, ) -> Result<TokenValue, SaTokenError>
登录:使用完整的 TokenInfo 对象创建 token
§参数 | Parameters
token_info- 完整的 TokenInfo 对象,包含所有 token 信息 | Complete TokenInfo object containing all token information
§说明 | Notes
- TokenInfo 中的
token字段将被使用(如果已设置),否则会自动生成 - TokenInfo 中的
login_id字段必须设置 - 如果
expire_time为 None,将使用配置的过期时间 - The
tokenfield in TokenInfo will be used (if set), otherwise will be auto-generated - The
login_idfield in TokenInfo must be set - If
expire_timeis None, will use configured timeout
§示例 | Example
ⓘ
use sa_token_core::token::{TokenInfo, TokenValue};
use chrono::Utc;
let mut token_info = TokenInfo::new(
TokenValue::new("custom_token_123"),
"user_123"
);
token_info.login_type = "admin".to_string();
token_info.device = Some("iPhone".to_string());
token_info.extra_data = Some(json!({"ip": "192.168.1.1"}));
let token = manager.login_with_token_info(token_info).await?;Sourcepub async fn logout(&self, token: &TokenValue) -> Result<(), SaTokenError>
pub async fn logout(&self, token: &TokenValue) -> Result<(), SaTokenError>
登出:删除指定 token
Sourcepub async fn logout_by_login_id(
&self,
login_id: &str,
) -> Result<(), SaTokenError>
pub async fn logout_by_login_id( &self, login_id: &str, ) -> Result<(), SaTokenError>
根据登录 ID 登出所有 token
Sourcepub async fn get_token_info(
&self,
token: &TokenValue,
) -> Result<TokenInfo, SaTokenError>
pub async fn get_token_info( &self, token: &TokenValue, ) -> Result<TokenInfo, SaTokenError>
获取 token 信息
Sourcepub async fn is_valid(&self, token: &TokenValue) -> bool
pub async fn is_valid(&self, token: &TokenValue) -> bool
检查 token 是否有效
Sourcepub async fn get_session(
&self,
login_id: &str,
) -> Result<SaSession, SaTokenError>
pub async fn get_session( &self, login_id: &str, ) -> Result<SaSession, SaTokenError>
获取 session
Sourcepub async fn save_session(
&self,
session: &SaSession,
) -> Result<(), SaTokenError>
pub async fn save_session( &self, session: &SaSession, ) -> Result<(), SaTokenError>
保存 session
Sourcepub async fn delete_session(&self, login_id: &str) -> Result<(), SaTokenError>
pub async fn delete_session(&self, login_id: &str) -> Result<(), SaTokenError>
删除 session
Sourcepub async fn renew_timeout(
&self,
token: &TokenValue,
timeout_seconds: i64,
) -> Result<(), SaTokenError>
pub async fn renew_timeout( &self, token: &TokenValue, timeout_seconds: i64, ) -> Result<(), SaTokenError>
续期 token(重置过期时间)
Trait Implementations§
Source§impl Clone for SaTokenManager
impl Clone for SaTokenManager
Source§fn clone(&self) -> SaTokenManager
fn clone(&self) -> SaTokenManager
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for SaTokenManager
impl !RefUnwindSafe for SaTokenManager
impl Send for SaTokenManager
impl Sync for SaTokenManager
impl Unpin for SaTokenManager
impl !UnwindSafe for SaTokenManager
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> ServiceExt for T
impl<T> ServiceExt for T
Source§fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
Self: Sized,
fn propagate_header(self, header: HeaderName) -> PropagateHeader<Self>where
Self: Sized,
Propagate a header from the request to the response. Read more
Source§fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
Self: Sized,
fn add_extension<T>(self, value: T) -> AddExtension<Self, T>where
Self: Sized,
Add some shareable value to request extensions. Read more
Source§fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>where
Self: Sized,
fn map_request_body<F>(self, f: F) -> MapRequestBody<Self, F>where
Self: Sized,
Apply a transformation to the request body. Read more
Source§fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
fn map_response_body<F>(self, f: F) -> MapResponseBody<Self, F>where
Self: Sized,
Apply a transformation to the response body. Read more
Source§fn compression(self) -> Compression<Self>where
Self: Sized,
fn compression(self) -> Compression<Self>where
Self: Sized,
Compresses response bodies. Read more
Source§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
Decompress response bodies. Read more
Source§fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
fn trace_for_http(self) -> Trace<Self, SharedClassifier<ServerErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using HTTP status codes. Read more
Source§fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
fn trace_for_grpc(self) -> Trace<Self, SharedClassifier<GrpcErrorsAsFailures>>where
Self: Sized,
High level tracing that classifies responses using gRPC headers. Read more
Source§fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
fn follow_redirects(self) -> FollowRedirect<Self>where
Self: Sized,
Source§fn sensitive_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
Self: Sized,
fn sensitive_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<SetSensitiveResponseHeaders<Self>>where
Self: Sized,
Source§fn sensitive_request_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
Self: Sized,
fn sensitive_request_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveRequestHeaders<Self>where
Self: Sized,
Source§fn sensitive_response_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
Self: Sized,
fn sensitive_response_headers(
self,
headers: impl IntoIterator<Item = HeaderName>,
) -> SetSensitiveResponseHeaders<Self>where
Self: Sized,
Source§fn override_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn override_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
Insert a header into the request. Read more
Source§fn append_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn append_request_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
Append a header into the request. Read more
Source§fn insert_request_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
fn insert_request_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetRequestHeader<Self, M>where
Self: Sized,
Insert a header into the request, if the header is not already present. Read more
Source§fn override_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn override_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
Insert a header into the response. Read more
Source§fn append_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn append_response_header<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
Append a header into the response. Read more
Source§fn insert_response_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
fn insert_response_header_if_not_present<M>(
self,
header_name: HeaderName,
make: M,
) -> SetResponseHeader<Self, M>where
Self: Sized,
Insert a header into the response, if the header is not already present. Read more
Source§fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_request_id<M>(
self,
header_name: HeaderName,
make_request_id: M,
) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
Add request id header and extension. Read more
Source§fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
fn set_x_request_id<M>(self, make_request_id: M) -> SetRequestId<Self, M>where
Self: Sized,
M: MakeRequestId,
Add request id header and extension, using
x-request-id as the header name. Read moreSource§fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_request_id(
self,
header_name: HeaderName,
) -> PropagateRequestId<Self>where
Self: Sized,
Propgate request ids from requests to responses. Read more
Source§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
Propgate request ids from requests to responses, using
x-request-id as the header name. Read moreSource§fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
fn catch_panic(self) -> CatchPanic<Self, DefaultResponseForPanic>where
Self: Sized,
Catch panics and convert them into
500 Internal Server responses. Read moreSource§fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
fn request_body_limit(self, limit: usize) -> RequestBodyLimit<Self>where
Self: Sized,
Intercept requests with over-sized payloads and convert them into
413 Payload Too Large responses. Read moreSource§fn trim_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
fn trim_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
Remove trailing slashes from paths. Read more
Source§fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
fn append_trailing_slash(self) -> NormalizePath<Self>where
Self: Sized,
Append trailing slash to paths. Read more