pub struct StpUtil;Expand description
StpUtil - 权限认证工具类
提供便捷的认证和授权操作方法,类似于 Java 版 sa-token 的 StpUtil
Implementations§
Source§impl StpUtil
impl StpUtil
Sourcepub fn init_manager(manager: SaTokenManager)
pub fn init_manager(manager: SaTokenManager)
Sourcepub fn event_bus() -> &'static SaTokenEventBus
pub fn event_bus() -> &'static SaTokenEventBus
获取事件总线,用于注册监听器
§示例
use sa_token_core::{StpUtil, SaTokenListener};
use async_trait::async_trait;
struct MyListener;
#[async_trait]
impl SaTokenListener for MyListener {
async fn on_login(&self, login_id: &str, token: &str, login_type: &str) {
println!("用户 {} 登录了", login_id);
}
}
// 注册监听器
StpUtil::event_bus().register(Arc::new(MyListener)).await;Sourcepub fn register_listener(listener: Arc<dyn SaTokenListener>)
pub fn register_listener(listener: Arc<dyn SaTokenListener>)
Sourcepub async fn login(login_id: impl LoginId) -> Result<TokenValue, SaTokenError>
pub async fn login(login_id: impl LoginId) -> Result<TokenValue, SaTokenError>
pub async fn login_with_type( login_id: impl LoginId, _login_type: impl Into<String>, ) -> Result<TokenValue, SaTokenError>
Sourcepub async fn login_with_extra(
login_id: impl LoginId,
extra_data: Value,
) -> Result<TokenValue, SaTokenError>
pub async fn login_with_extra( login_id: impl LoginId, extra_data: Value, ) -> Result<TokenValue, SaTokenError>
登录并设置额外数据 | Login with extra data
§参数 | Arguments
login_id- 登录ID | Login IDextra_data- 额外数据 | Extra data
Sourcepub async fn login_with_manager(
manager: &SaTokenManager,
login_id: impl Into<String>,
) -> Result<TokenValue, SaTokenError>
pub async fn login_with_manager( manager: &SaTokenManager, login_id: impl Into<String>, ) -> Result<TokenValue, SaTokenError>
会话登录(带 manager 参数的版本,向后兼容)
Sourcepub async fn logout(token: &TokenValue) -> Result<(), SaTokenError>
pub async fn logout(token: &TokenValue) -> Result<(), SaTokenError>
会话登出
pub async fn logout_with_manager( manager: &SaTokenManager, token: &TokenValue, ) -> Result<(), SaTokenError>
pub async fn kick_out_with_manager( manager: &SaTokenManager, login_id: &str, ) -> Result<(), SaTokenError>
Sourcepub async fn logout_by_login_id(
login_id: impl LoginId,
) -> Result<(), SaTokenError>
pub async fn logout_by_login_id( login_id: impl LoginId, ) -> Result<(), SaTokenError>
强制登出(根据登录ID)
Sourcepub async fn logout_by_token(token: &TokenValue) -> Result<(), SaTokenError>
pub async fn logout_by_token(token: &TokenValue) -> Result<(), SaTokenError>
根据 token 登出(别名方法,更直观)
Sourcepub fn get_token_value() -> Result<TokenValue, SaTokenError>
pub fn get_token_value() -> Result<TokenValue, SaTokenError>
Sourcepub async fn logout_current() -> Result<(), SaTokenError>
pub async fn logout_current() -> Result<(), SaTokenError>
Sourcepub fn is_login_current() -> bool
pub fn is_login_current() -> bool
Sourcepub fn check_login_current() -> Result<(), SaTokenError>
pub fn check_login_current() -> Result<(), SaTokenError>
Sourcepub async fn get_login_id_as_string() -> Result<String, SaTokenError>
pub async fn get_login_id_as_string() -> Result<String, SaTokenError>
Sourcepub async fn get_login_id_as_long() -> Result<i64, SaTokenError>
pub async fn get_login_id_as_long() -> Result<i64, SaTokenError>
Sourcepub fn get_token_info_current() -> Result<Arc<TokenInfo>, SaTokenError>
pub fn get_token_info_current() -> Result<Arc<TokenInfo>, SaTokenError>
Sourcepub async fn is_login(token: &TokenValue) -> bool
pub async fn is_login(token: &TokenValue) -> bool
检查当前 token 是否已登录
Sourcepub async fn is_login_by_login_id(login_id: impl LoginId) -> bool
pub async fn is_login_by_login_id(login_id: impl LoginId) -> bool
pub async fn is_login_with_manager( manager: &SaTokenManager, token: &TokenValue, ) -> bool
Sourcepub async fn check_login(token: &TokenValue) -> Result<(), SaTokenError>
pub async fn check_login(token: &TokenValue) -> Result<(), SaTokenError>
检查当前 token 是否已登录,如果未登录则抛出异常
Sourcepub async fn get_token_info(
token: &TokenValue,
) -> Result<TokenInfo, SaTokenError>
pub async fn get_token_info( token: &TokenValue, ) -> Result<TokenInfo, SaTokenError>
获取 token 信息
Sourcepub async fn get_login_id(token: &TokenValue) -> Result<String, SaTokenError>
pub async fn get_login_id(token: &TokenValue) -> Result<String, SaTokenError>
获取当前 token 的登录ID
Sourcepub async fn get_login_id_or_default(
token: &TokenValue,
default: impl Into<String>,
) -> String
pub async fn get_login_id_or_default( token: &TokenValue, default: impl Into<String>, ) -> String
获取当前 token 的登录ID,如果未登录则返回默认值
Sourcepub async fn get_token_by_login_id(
login_id: impl LoginId,
) -> Result<TokenValue, SaTokenError>
pub async fn get_token_by_login_id( login_id: impl LoginId, ) -> Result<TokenValue, SaTokenError>
Sourcepub async fn get_all_tokens_by_login_id(
login_id: impl LoginId,
) -> Result<Vec<TokenValue>, SaTokenError>
pub async fn get_all_tokens_by_login_id( login_id: impl LoginId, ) -> Result<Vec<TokenValue>, SaTokenError>
Sourcepub async fn get_session(
login_id: impl LoginId,
) -> Result<SaSession, SaTokenError>
pub async fn get_session( login_id: impl LoginId, ) -> Result<SaSession, SaTokenError>
获取当前登录账号的 Session
Sourcepub async fn save_session(session: &SaSession) -> Result<(), SaTokenError>
pub async fn save_session(session: &SaSession) -> Result<(), SaTokenError>
保存 Session
Sourcepub async fn delete_session(login_id: impl LoginId) -> Result<(), SaTokenError>
pub async fn delete_session(login_id: impl LoginId) -> Result<(), SaTokenError>
删除 Session
Sourcepub async fn set_session_value<T>(
login_id: impl LoginId,
key: &str,
value: T,
) -> Result<(), SaTokenError>where
T: Serialize,
pub async fn set_session_value<T>(
login_id: impl LoginId,
key: &str,
value: T,
) -> Result<(), SaTokenError>where
T: Serialize,
在 Session 中设置值
Sourcepub async fn get_session_value<T>(
login_id: impl LoginId,
key: &str,
) -> Result<Option<T>, SaTokenError>where
T: DeserializeOwned,
pub async fn get_session_value<T>(
login_id: impl LoginId,
key: &str,
) -> Result<Option<T>, SaTokenError>where
T: DeserializeOwned,
从 Session 中获取值
Sourcepub fn create_token(token_value: impl Into<String>) -> TokenValue
pub fn create_token(token_value: impl Into<String>) -> TokenValue
创建一个新的 token(但不登录)
Sourcepub fn is_valid_token_format(token: &str) -> bool
pub fn is_valid_token_format(token: &str) -> bool
检查 token 格式是否有效(仅检查格式,不检查是否存在于存储中)
Source§impl StpUtil
impl StpUtil
Sourcepub async fn set_permissions(
login_id: impl LoginId,
permissions: Vec<String>,
) -> Result<(), SaTokenError>
pub async fn set_permissions( login_id: impl LoginId, permissions: Vec<String>, ) -> Result<(), SaTokenError>
为用户添加权限
Sourcepub async fn add_permission(
login_id: impl LoginId,
permission: impl Into<String>,
) -> Result<(), SaTokenError>
pub async fn add_permission( login_id: impl LoginId, permission: impl Into<String>, ) -> Result<(), SaTokenError>
为用户添加单个权限
Sourcepub async fn remove_permission(
login_id: impl LoginId,
permission: &str,
) -> Result<(), SaTokenError>
pub async fn remove_permission( login_id: impl LoginId, permission: &str, ) -> Result<(), SaTokenError>
移除用户的某个权限
Sourcepub async fn clear_permissions(
login_id: impl LoginId,
) -> Result<(), SaTokenError>
pub async fn clear_permissions( login_id: impl LoginId, ) -> Result<(), SaTokenError>
清除用户的所有权限
Sourcepub async fn get_permissions(login_id: impl LoginId) -> Vec<String>
pub async fn get_permissions(login_id: impl LoginId) -> Vec<String>
获取用户的所有权限
Sourcepub async fn has_permission(login_id: impl LoginId, permission: &str) -> bool
pub async fn has_permission(login_id: impl LoginId, permission: &str) -> bool
检查用户是否拥有指定权限
Sourcepub async fn has_all_permissions(
login_id: impl LoginId,
permissions: &[&str],
) -> bool
pub async fn has_all_permissions( login_id: impl LoginId, permissions: &[&str], ) -> bool
检查用户是否拥有所有指定权限(AND 逻辑)
Sourcepub async fn has_permissions_and(
login_id: impl LoginId,
permissions: &[&str],
) -> bool
pub async fn has_permissions_and( login_id: impl LoginId, permissions: &[&str], ) -> bool
检查用户是否拥有所有指定权限(别名,AND 逻辑)
Sourcepub async fn has_any_permission(
login_id: impl LoginId,
permissions: &[&str],
) -> bool
pub async fn has_any_permission( login_id: impl LoginId, permissions: &[&str], ) -> bool
检查用户是否拥有任一指定权限(OR 逻辑)
Sourcepub async fn has_permissions_or(
login_id: impl LoginId,
permissions: &[&str],
) -> bool
pub async fn has_permissions_or( login_id: impl LoginId, permissions: &[&str], ) -> bool
检查用户是否拥有任一指定权限(别名,OR 逻辑)
Sourcepub async fn check_permission(
login_id: impl LoginId,
permission: &str,
) -> Result<(), SaTokenError>
pub async fn check_permission( login_id: impl LoginId, permission: &str, ) -> Result<(), SaTokenError>
检查权限,如果没有则抛出异常
Source§impl StpUtil
impl StpUtil
Sourcepub async fn set_roles(
login_id: impl LoginId,
roles: Vec<String>,
) -> Result<(), SaTokenError>
pub async fn set_roles( login_id: impl LoginId, roles: Vec<String>, ) -> Result<(), SaTokenError>
为用户设置角色
Sourcepub async fn add_role(
login_id: impl LoginId,
role: impl Into<String>,
) -> Result<(), SaTokenError>
pub async fn add_role( login_id: impl LoginId, role: impl Into<String>, ) -> Result<(), SaTokenError>
为用户添加单个角色
Sourcepub async fn remove_role(
login_id: impl LoginId,
role: &str,
) -> Result<(), SaTokenError>
pub async fn remove_role( login_id: impl LoginId, role: &str, ) -> Result<(), SaTokenError>
移除用户的某个角色
Sourcepub async fn clear_roles(login_id: impl LoginId) -> Result<(), SaTokenError>
pub async fn clear_roles(login_id: impl LoginId) -> Result<(), SaTokenError>
清除用户的所有角色
Sourcepub async fn has_all_roles(login_id: impl LoginId, roles: &[&str]) -> bool
pub async fn has_all_roles(login_id: impl LoginId, roles: &[&str]) -> bool
检查用户是否拥有所有指定角色(AND 逻辑)
Sourcepub async fn has_roles_and(login_id: impl LoginId, roles: &[&str]) -> bool
pub async fn has_roles_and(login_id: impl LoginId, roles: &[&str]) -> bool
检查用户是否拥有所有指定角色(别名,AND 逻辑)
Sourcepub async fn has_any_role(login_id: impl LoginId, roles: &[&str]) -> bool
pub async fn has_any_role(login_id: impl LoginId, roles: &[&str]) -> bool
检查用户是否拥有任一指定角色(OR 逻辑)
Sourcepub async fn has_roles_or(login_id: impl LoginId, roles: &[&str]) -> bool
pub async fn has_roles_or(login_id: impl LoginId, roles: &[&str]) -> bool
检查用户是否拥有任一指定角色(别名,OR 逻辑)
Sourcepub async fn check_role(
login_id: impl LoginId,
role: &str,
) -> Result<(), SaTokenError>
pub async fn check_role( login_id: impl LoginId, role: &str, ) -> Result<(), SaTokenError>
检查角色,如果没有则抛出异常
Source§impl StpUtil
impl StpUtil
Sourcepub async fn kick_out_batch<T>(
login_ids: &[T],
) -> Result<Vec<Result<(), SaTokenError>>, SaTokenError>where
T: LoginId,
pub async fn kick_out_batch<T>(
login_ids: &[T],
) -> Result<Vec<Result<(), SaTokenError>>, SaTokenError>where
T: LoginId,
批量踢人下线
Sourcepub async fn get_token_timeout(
token: &TokenValue,
) -> Result<Option<i64>, SaTokenError>
pub async fn get_token_timeout( token: &TokenValue, ) -> Result<Option<i64>, SaTokenError>
获取 token 剩余有效时间(秒)
Sourcepub async fn renew_timeout(
token: &TokenValue,
timeout_seconds: i64,
) -> Result<(), SaTokenError>
pub async fn renew_timeout( token: &TokenValue, timeout_seconds: i64, ) -> Result<(), SaTokenError>
续期 token(重置过期时间)
Sourcepub async fn set_extra_data(
token: &TokenValue,
extra_data: Value,
) -> Result<(), SaTokenError>
pub async fn set_extra_data( token: &TokenValue, extra_data: Value, ) -> Result<(), SaTokenError>
设置 Token 的额外数据 | Set extra data for token
§参数 | Arguments
token- Token值 | Token valueextra_data- 额外数据 | Extra data
Sourcepub async fn get_extra_data(
token: &TokenValue,
) -> Result<Option<Value>, SaTokenError>
pub async fn get_extra_data( token: &TokenValue, ) -> Result<Option<Value>, SaTokenError>
Sourcepub fn builder(login_id: impl LoginId) -> TokenBuilder
pub fn builder(login_id: impl LoginId) -> TokenBuilder
Auto Trait Implementations§
impl Freeze for StpUtil
impl RefUnwindSafe for StpUtil
impl Send for StpUtil
impl Sync for StpUtil
impl Unpin for StpUtil
impl UnwindSafe for StpUtil
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
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,
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,
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,
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,
Source§fn compression(self) -> Compression<Self>where
Self: Sized,
fn compression(self) -> Compression<Self>where
Self: Sized,
Source§fn decompression(self) -> Decompression<Self>where
Self: Sized,
fn decompression(self) -> Decompression<Self>where
Self: Sized,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
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,
Source§fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
fn propagate_x_request_id(self) -> PropagateRequestId<Self>where
Self: Sized,
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,
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,
413 Payload Too Large responses. Read more