pub struct StpUtil;Expand description
Static helpers for login, logout, and authorization. 登录、登出与鉴权的静态辅助方法。
Implementations§
Source§impl StpUtil
impl StpUtil
Sourcepub fn try_init_manager(manager: SaTokenManager) -> Result<(), SaTokenError>
pub fn try_init_manager(manager: SaTokenManager) -> Result<(), SaTokenError>
尝试初始化全局 Manager(应用启动调用一次) Try to initialize the global manager (call once at startup).
重复调用返回 AlreadyInitialized,不 panic。
Duplicate calls return AlreadyInitialized without panicking.
Sourcepub fn init_manager(manager: SaTokenManager)
👎Deprecated: use try_init_manager() which returns Result instead of panicking
pub fn init_manager(manager: SaTokenManager)
use try_init_manager() which returns Result instead of panicking
Sourcepub fn try_get_manager() -> Result<&'static Arc<SaTokenManager>, SaTokenError>
pub fn try_get_manager() -> Result<&'static Arc<SaTokenManager>, SaTokenError>
尝试获取全局 Manager Try to get the global manager
Sourcepub fn event_bus() -> Option<&'static SaTokenEventBus>
pub fn event_bus() -> Option<&'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));尝试获取事件总线;未初始化返回 None(不 panic)。
Try to get the event bus; None before init (no panic).
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>
Sourcepub async fn login_with_type(
login_id: impl LoginId,
login_type: impl Into<String>,
) -> Result<TokenValue, SaTokenError>
pub async fn login_with_type( login_id: impl LoginId, login_type: impl Into<String>, ) -> Result<TokenValue, SaTokenError>
login_with_type — login with type | login_with_type
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>
会话登出
Sourcepub async fn logout_with_manager(
manager: &SaTokenManager,
token: &TokenValue,
) -> Result<(), SaTokenError>
pub async fn logout_with_manager( manager: &SaTokenManager, token: &TokenValue, ) -> Result<(), SaTokenError>
logout_with_manager — logout with manager | logout_with_manager
Opt-in write of the token cookie (no-op unless is_write_cookie is true).
可选写入 token Cookie(未开启 is_write_cookie 时为空操作)。
Clear the token cookie (same opt-in guard as write). 清除 token Cookie(与写入同一开关)。
Sourcepub async fn update_active_timeout(
token: &TokenValue,
seconds: i64,
) -> Result<(), SaTokenError>
pub async fn update_active_timeout( token: &TokenValue, seconds: i64, ) -> Result<(), SaTokenError>
Set per-token idle timeout. No-op unless dynamic_active_timeout is enabled.
设置单 token 闲置超时。未打开 dynamic_active_timeout 时返回 ConfigError。
Sourcepub async fn kick_out(login_id: impl LoginId) -> Result<(), SaTokenError>
pub async fn kick_out(login_id: impl LoginId) -> Result<(), SaTokenError>
踢人下线(使用当前请求 login_type,无上下文则 default) Kick out (uses current request login_type; falls back to default).
Sourcepub async fn kick_out_with_type(
login_type: &str,
login_id: impl LoginId,
) -> Result<(), SaTokenError>
pub async fn kick_out_with_type( login_type: &str, login_id: impl LoginId, ) -> Result<(), SaTokenError>
kick_out_with_type — kick out with type | kick_out_with_type
Sourcepub async fn kick_out_with_manager(
manager: &SaTokenManager,
login_type: &str,
login_id: impl LoginId,
) -> Result<(), SaTokenError>
pub async fn kick_out_with_manager( manager: &SaTokenManager, login_type: &str, login_id: impl LoginId, ) -> Result<(), SaTokenError>
kick_out_with_manager — kick out with manager | kick_out_with_manager
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>
强制登出(使用当前请求 login_type,无上下文则 default) Force logout by login_id (uses current request login_type; falls back to default).
Sourcepub async fn logout_by_login_id_with_type(
login_type: &str,
login_id: impl LoginId,
) -> Result<(), SaTokenError>
pub async fn logout_by_login_id_with_type( login_type: &str, login_id: impl LoginId, ) -> Result<(), SaTokenError>
logout_by_login_id_with_type — logout by login id with type | logout_by_login_id_with_type
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
检查当前会话是否登录(同步弱校验:仅看上下文是否有 token 字符串,不查存储) Sync weak check: whether context has a token string (does not hit storage).
踢出/过期后若中间件未刷新上下文,仍可能为 true。强保证用 [check_login_current_async]。
May still be true after kick/expire if middleware did not refresh context.
Sourcepub fn check_login_current() -> Result<(), SaTokenError>
pub fn check_login_current() -> Result<(), SaTokenError>
检查当前会话登录状态(同步弱校验),未登录则抛出异常 Sync weak check; returns error when context has no token.
Sourcepub async fn check_login_current_async() -> Result<(), SaTokenError>
pub async fn check_login_current_async() -> Result<(), SaTokenError>
异步强校验:上下文有 token 且 storage 仍有效 Async strong check: context has a token AND storage still considers it valid.
Sourcepub async fn is_login_current_async() -> bool
pub async fn is_login_current_async() -> bool
异步强校验是否登录 Async strong login check returning bool.
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
Sourcepub async fn is_login_with_manager(
manager: &SaTokenManager,
token: &TokenValue,
) -> bool
pub async fn is_login_with_manager( manager: &SaTokenManager, token: &TokenValue, ) -> bool
is_login_with_manager — is login with manager | is_login_with_manager
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_token_by_login_id_with_type(
login_type: &str,
login_id: impl LoginId,
) -> Result<TokenValue, SaTokenError>
pub async fn get_token_by_login_id_with_type( login_type: &str, login_id: impl LoginId, ) -> Result<TokenValue, SaTokenError>
指定 login_type 获取当前账号的 login:token 映射。
委托 Manager,禁止 StpUtil 直连 TokenRepo。
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>
get_all_tokens_by_login_id — get all tokens by login id | get_all_tokens_by_login_id
Sourcepub async fn get_all_tokens_by_login_id_with_type(
login_type: &str,
login_id: impl LoginId,
) -> Result<Vec<TokenValue>, SaTokenError>
pub async fn get_all_tokens_by_login_id_with_type( login_type: &str, login_id: impl LoginId, ) -> Result<Vec<TokenValue>, SaTokenError>
指定 login_type 获取全部在线 token。
委托 Manager(内部走 TokenRepo list 原语)。
Sourcepub async fn get_session_with_type(
login_type: &str,
login_id: impl LoginId,
) -> Result<SaSession, SaTokenError>
pub async fn get_session_with_type( login_type: &str, login_id: impl LoginId, ) -> Result<SaSession, SaTokenError>
get_session_with_type — get session with type | get_session_with_type
Sourcepub async fn delete_session_with_type(
login_type: &str,
login_id: impl LoginId,
) -> Result<(), SaTokenError>
pub async fn delete_session_with_type( login_type: &str, login_id: impl LoginId, ) -> Result<(), SaTokenError>
delete_session_with_type — delete session with type | delete_session_with_type
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(使用当前请求 login_type) Get session for login_id (uses current request login_type).
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(使用当前请求 login_type) Delete session (uses current request login_type).
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 中设置值(使用当前请求 login_type) Set a value in session (uses current request login_type).
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 中获取值(使用当前请求 login_type) Get a value from session (uses current request login_type).
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_with_type(
login_type: &str,
login_id: impl LoginId,
permissions: Vec<String>,
) -> Result<(), SaTokenError>
pub async fn set_permissions_with_type( login_type: &str, login_id: impl LoginId, permissions: Vec<String>, ) -> Result<(), SaTokenError>
覆盖权限列表(指定账号体系)| Overwrite permissions for a login type
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>
覆盖权限列表 | Overwrite permissions
Sourcepub async fn add_permission_with_type(
login_type: &str,
login_id: impl LoginId,
permission: impl Into<String>,
) -> Result<(), SaTokenError>
pub async fn add_permission_with_type( login_type: &str, login_id: impl LoginId, permission: impl Into<String>, ) -> Result<(), SaTokenError>
追加单个权限(指定账号体系)| Append one permission for a login type
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>
追加单个权限 | Append one permission
Sourcepub async fn remove_permission_with_type(
login_type: &str,
login_id: impl LoginId,
permission: &str,
) -> Result<(), SaTokenError>
pub async fn remove_permission_with_type( login_type: &str, login_id: impl LoginId, permission: &str, ) -> Result<(), SaTokenError>
移除单个权限(指定账号体系)| Remove one permission for a login type
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>
移除单个权限 | Remove one permission
Sourcepub async fn clear_permissions_with_type(
login_type: &str,
login_id: impl LoginId,
) -> Result<(), SaTokenError>
pub async fn clear_permissions_with_type( login_type: &str, login_id: impl LoginId, ) -> Result<(), SaTokenError>
清空权限(指定账号体系)| Clear permissions for a login type
Sourcepub async fn clear_permissions(
login_id: impl LoginId,
) -> Result<(), SaTokenError>
pub async fn clear_permissions( login_id: impl LoginId, ) -> Result<(), SaTokenError>
清空权限 | Clear permissions
Sourcepub async fn try_get_permissions_with_type(
login_type: &str,
login_id: impl LoginId,
) -> Result<Vec<String>, SaTokenError>
pub async fn try_get_permissions_with_type( login_type: &str, login_id: impl LoginId, ) -> Result<Vec<String>, SaTokenError>
获取权限列表(指定账号体系,错误上抛) Permission list for a login type, propagating errors.
Sourcepub async fn try_get_permissions(
login_id: impl LoginId,
) -> Result<Vec<String>, SaTokenError>
pub async fn try_get_permissions( login_id: impl LoginId, ) -> Result<Vec<String>, SaTokenError>
获取权限列表(错误上抛,修 B2-39)
Unlike get_permissions, this propagates storage failures.
Sourcepub async fn get_permissions(login_id: impl LoginId) -> Vec<String>
pub async fn get_permissions(login_id: impl LoginId) -> Vec<String>
获取权限列表(失败返回空表 + 告警日志,修 B2-39) Keeps the old signature; failures now log a warning instead of being silent.
Sourcepub async fn has_permission_with_type(
login_type: &str,
login_id: impl LoginId,
permission: &str,
) -> bool
pub async fn has_permission_with_type( login_type: &str, login_id: impl LoginId, permission: &str, ) -> bool
单个权限校验(指定账号体系)| Single permission check for a login type
Sourcepub async fn has_permission(login_id: impl LoginId, permission: &str) -> bool
pub async fn has_permission(login_id: impl LoginId, permission: &str) -> bool
单个权限校验 | Single permission check
Sourcepub async fn has_all_permissions_with_type(
login_type: &str,
login_id: impl LoginId,
permissions: &[&str],
) -> bool
pub async fn has_all_permissions_with_type( login_type: &str, login_id: impl LoginId, permissions: &[&str], ) -> bool
批量权限校验(AND,指定账号体系)| Batch AND check for a login type
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)| Batch AND check
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
has_all_permissions 的别名 | Alias
Sourcepub async fn has_any_permission_with_type(
login_type: &str,
login_id: impl LoginId,
permissions: &[&str],
) -> bool
pub async fn has_any_permission_with_type( login_type: &str, login_id: impl LoginId, permissions: &[&str], ) -> bool
批量权限校验(OR,指定账号体系)| Batch OR check for a login type
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)| Batch OR check
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
has_any_permission 的别名 | Alias
Sourcepub async fn check_permission_with_type(
login_type: &str,
login_id: impl LoginId,
permission: &str,
) -> Result<(), SaTokenError>
pub async fn check_permission_with_type( login_type: &str, login_id: impl LoginId, permission: &str, ) -> Result<(), SaTokenError>
权限校验(失败返回 Err,指定账号体系)
Permission check returning Err on denial, for a login type.
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>
权限校验(失败返回 Err)| Permission check returning Err on denial
Sourcepub async fn check_all_permissions(
login_id: impl LoginId,
permissions: &[&str],
) -> Result<(), SaTokenError>
pub async fn check_all_permissions( login_id: impl LoginId, permissions: &[&str], ) -> Result<(), SaTokenError>
批量权限校验(AND,失败返回 Err,B2-36 新增)
Batch AND check returning Err on denial.
Sourcepub async fn check_any_permission(
login_id: impl LoginId,
permissions: &[&str],
) -> Result<(), SaTokenError>
pub async fn check_any_permission( login_id: impl LoginId, permissions: &[&str], ) -> Result<(), SaTokenError>
批量权限校验(OR,失败返回 Err,B2-36 新增)
Batch OR check returning Err on denial.
Source§impl StpUtil
impl StpUtil
Sourcepub async fn set_roles_with_type(
login_type: &str,
login_id: impl LoginId,
roles: Vec<String>,
) -> Result<(), SaTokenError>
pub async fn set_roles_with_type( login_type: &str, login_id: impl LoginId, roles: Vec<String>, ) -> Result<(), SaTokenError>
覆盖角色列表(指定账号体系)| Overwrite roles for a login type
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>
覆盖角色列表 | Overwrite roles
Sourcepub async fn add_role_with_type(
login_type: &str,
login_id: impl LoginId,
role: impl Into<String>,
) -> Result<(), SaTokenError>
pub async fn add_role_with_type( login_type: &str, login_id: impl LoginId, role: impl Into<String>, ) -> Result<(), SaTokenError>
追加单个角色(指定账号体系)| Append one role for a login type
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>
追加单个角色 | Append one role
Sourcepub async fn remove_role_with_type(
login_type: &str,
login_id: impl LoginId,
role: &str,
) -> Result<(), SaTokenError>
pub async fn remove_role_with_type( login_type: &str, login_id: impl LoginId, role: &str, ) -> Result<(), SaTokenError>
移除单个角色(指定账号体系)| Remove one role for a login type
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>
移除单个角色 | Remove one role
Sourcepub async fn clear_roles_with_type(
login_type: &str,
login_id: impl LoginId,
) -> Result<(), SaTokenError>
pub async fn clear_roles_with_type( login_type: &str, login_id: impl LoginId, ) -> Result<(), SaTokenError>
清空角色(指定账号体系)| Clear roles for a login type
Sourcepub async fn clear_roles(login_id: impl LoginId) -> Result<(), SaTokenError>
pub async fn clear_roles(login_id: impl LoginId) -> Result<(), SaTokenError>
清空角色 | Clear roles
Sourcepub async fn try_get_roles_with_type(
login_type: &str,
login_id: impl LoginId,
) -> Result<Vec<String>, SaTokenError>
pub async fn try_get_roles_with_type( login_type: &str, login_id: impl LoginId, ) -> Result<Vec<String>, SaTokenError>
获取角色列表(指定账号体系,错误上抛) Role list for a login type, propagating errors.
Sourcepub async fn try_get_roles(
login_id: impl LoginId,
) -> Result<Vec<String>, SaTokenError>
pub async fn try_get_roles( login_id: impl LoginId, ) -> Result<Vec<String>, SaTokenError>
获取角色列表(错误上抛,修 B2-39)| Role list propagating errors
Sourcepub async fn get_roles(login_id: impl LoginId) -> Vec<String>
pub async fn get_roles(login_id: impl LoginId) -> Vec<String>
获取角色列表(失败返回空表 + 告警日志)| Role list, empty on failure with a warning
Sourcepub async fn has_role_with_type(
login_type: &str,
login_id: impl LoginId,
role: &str,
) -> bool
pub async fn has_role_with_type( login_type: &str, login_id: impl LoginId, role: &str, ) -> bool
单个角色校验(指定账号体系)| Single role check for a login type
Sourcepub async fn has_all_roles_with_type(
login_type: &str,
login_id: impl LoginId,
roles: &[&str],
) -> bool
pub async fn has_all_roles_with_type( login_type: &str, login_id: impl LoginId, roles: &[&str], ) -> bool
批量角色校验(AND,指定账号体系)| Batch AND role check for a login type
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)| Batch AND role check
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
has_all_roles 的别名 | Alias
Sourcepub async fn has_any_role_with_type(
login_type: &str,
login_id: impl LoginId,
roles: &[&str],
) -> bool
pub async fn has_any_role_with_type( login_type: &str, login_id: impl LoginId, roles: &[&str], ) -> bool
批量角色校验(OR,指定账号体系)| Batch OR role check for a login type
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)| Batch OR role check
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
has_any_role 的别名 | Alias
Sourcepub async fn check_role_with_type(
login_type: &str,
login_id: impl LoginId,
role: &str,
) -> Result<(), SaTokenError>
pub async fn check_role_with_type( login_type: &str, login_id: impl LoginId, role: &str, ) -> Result<(), SaTokenError>
角色校验(失败返回 Err,指定账号体系)
Role check returning Err on denial, for a login type.
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>
角色校验(失败返回 Err)| Role check returning Err on denial
Sourcepub async fn check_all_roles(
login_id: impl LoginId,
roles: &[&str],
) -> Result<(), SaTokenError>
pub async fn check_all_roles( login_id: impl LoginId, roles: &[&str], ) -> Result<(), SaTokenError>
批量角色校验(AND,失败返回 Err,B2-36 新增)
Batch AND role check returning Err.
Sourcepub async fn check_any_role(
login_id: impl LoginId,
roles: &[&str],
) -> Result<(), SaTokenError>
pub async fn check_any_role( login_id: impl LoginId, roles: &[&str], ) -> Result<(), SaTokenError>
批量角色校验(OR,失败返回 Err,B2-36 新增)
Batch OR role check returning Err.
Source§impl StpUtil
impl StpUtil
Sourcepub async fn disable(
login_id: impl LoginId,
time: i64,
) -> Result<(), SaTokenError>
pub async fn disable( login_id: impl LoginId, time: i64, ) -> Result<(), SaTokenError>
封禁账号(默认服务 login;使用当前请求 login_type) Disable account (default service; uses current request login_type).
Sourcepub async fn disable_with_type(
login_type: &str,
login_id: impl LoginId,
time: i64,
) -> Result<(), SaTokenError>
pub async fn disable_with_type( login_type: &str, login_id: impl LoginId, time: i64, ) -> Result<(), SaTokenError>
指定 login_type 封禁 Disable with explicit login_type.
Sourcepub async fn disable_level(
login_id: impl LoginId,
service: &str,
level: i32,
time: i64,
) -> Result<(), SaTokenError>
pub async fn disable_level( login_id: impl LoginId, service: &str, level: i32, time: i64, ) -> Result<(), SaTokenError>
封禁账号指定服务与等级(使用当前请求 login_type) Disable with service/level (uses current request login_type).
Sourcepub async fn check_disable(login_id: impl LoginId) -> Result<(), SaTokenError>
pub async fn check_disable(login_id: impl LoginId) -> Result<(), SaTokenError>
校验封禁(默认服务 login、最低等级)
Sourcepub async fn check_disable_service(
login_id: impl LoginId,
service: &str,
) -> Result<(), SaTokenError>
pub async fn check_disable_service( login_id: impl LoginId, service: &str, ) -> Result<(), SaTokenError>
校验指定服务的封禁
Sourcepub async fn check_disable_services(
login_id: impl LoginId,
services: &[&str],
) -> Result<(), SaTokenError>
pub async fn check_disable_services( login_id: impl LoginId, services: &[&str], ) -> Result<(), SaTokenError>
校验多个服务的封禁(使用当前请求 login_type)
Sourcepub async fn check_disable_level(
login_id: impl LoginId,
service: &str,
level: i32,
) -> Result<(), SaTokenError>
pub async fn check_disable_level( login_id: impl LoginId, service: &str, level: i32, ) -> Result<(), SaTokenError>
校验封禁等级(使用当前请求 login_type)
Sourcepub async fn get_disable_level(
login_id: impl LoginId,
service: &str,
) -> Result<i32, SaTokenError>
pub async fn get_disable_level( login_id: impl LoginId, service: &str, ) -> Result<i32, SaTokenError>
获取封禁等级(使用当前请求 login_type) Get disable level (uses current request login_type).
Sourcepub async fn get_disable_level_with_type(
login_type: &str,
login_id: impl LoginId,
service: &str,
) -> Result<i32, SaTokenError>
pub async fn get_disable_level_with_type( login_type: &str, login_id: impl LoginId, service: &str, ) -> Result<i32, SaTokenError>
指定 login_type 获取封禁等级 Get disable level with explicit login_type.
Sourcepub async fn untie_disable(
login_id: impl LoginId,
service: &str,
) -> Result<(), SaTokenError>
pub async fn untie_disable( login_id: impl LoginId, service: &str, ) -> Result<(), SaTokenError>
解封(使用当前请求 login_type)
Source§impl StpUtil
impl StpUtil
Sourcepub async fn open_safe(
service: &str,
safe_time: i64,
) -> Result<(), SaTokenError>
pub async fn open_safe( service: &str, safe_time: i64, ) -> Result<(), SaTokenError>
为当前 token 开启二级认证
Sourcepub async fn check_safe(service: &str) -> Result<(), SaTokenError>
pub async fn check_safe(service: &str) -> Result<(), SaTokenError>
校验当前 token 的二级认证
Sourcepub async fn close_safe(service: &str) -> Result<(), SaTokenError>
pub async fn close_safe(service: &str) -> Result<(), SaTokenError>
关闭当前 token 的二级认证
Source§impl StpUtil
impl StpUtil
Sourcepub fn switch_to(login_id: impl LoginId)
pub fn switch_to(login_id: impl LoginId)
临时切换为指定 login_id(写入请求上下文,task-local 与 thread-local 单轨就地突变)
Temporarily switch to the specified login_id (in-place mutation across task-local and thread-local).
Sourcepub fn end_switch()
pub fn end_switch()
结束临时身份切换(清除 switch_login_id,恢复真实身份)
End identity switch (clears switch_login_id, restoring real identity).
Sourcepub fn get_switch_login_id() -> Option<String>
pub fn get_switch_login_id() -> Option<String>
获取临时切换的 login_id(审计日志用)
Get the switched login_id (for audit logs).
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,
批量踢人下线(使用当前请求 login_type) Batch kick-out (uses current request login_type).
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(重置过期时间)。
委托 Manager → AuthService,避免 StpUtil 直写 storage 与 B1 续签策略分叉。
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 的额外数据。
委托 Manager::update_extra_data,禁止 StpUtil 直连 TokenRepo。
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 async fn get_terminal_list(
login_id: &str,
device_type: Option<&str>,
) -> Result<Vec<SaTerminalInfo>, SaTokenError>
pub async fn get_terminal_list( login_id: &str, device_type: Option<&str>, ) -> Result<Vec<SaTerminalInfo>, SaTokenError>
List terminals for the account | 列出账号终端
Sourcepub async fn get_token_value_list_by_login_id(
login_id: &str,
device_type: Option<&str>,
) -> Result<Vec<String>, SaTokenError>
pub async fn get_token_value_list_by_login_id( login_id: &str, device_type: Option<&str>, ) -> Result<Vec<String>, SaTokenError>
get_token_value_list_by_login_id — get token value list by login id | get_token_value_list_by_login_id
Sourcepub async fn get_terminal_info_by_token(
token: &TokenValue,
) -> Result<Option<SaTerminalInfo>, SaTokenError>
pub async fn get_terminal_info_by_token( token: &TokenValue, ) -> Result<Option<SaTerminalInfo>, SaTokenError>
Terminal info for a token | 按 Token 查终端信息
Sourcepub async fn check_current_terminal(expected: &str) -> Result<(), SaTokenError>
pub async fn check_current_terminal(expected: &str) -> Result<(), SaTokenError>
Require the current token’s device type to equal expected (exact match).
要求当前 token 的设备类型等于 expected(精确匹配,区分大小写)。
Sourcepub fn stp_logic(login_type: &str) -> Result<SaLogic, SaTokenError>
pub fn stp_logic(login_type: &str) -> Result<SaLogic, SaTokenError>
创建绑定 login_type 的廉价 Clone 门面(无全局注册表) Create a cheap Clone facade for login_type (no global registry).
Sourcepub fn put_stp_logic(_logic: SaLogic)
👎Deprecated: SaLogic is a cloneable facade; use SaLogic::new / StpUtil::stp_logic
pub fn put_stp_logic(_logic: SaLogic)
SaLogic is a cloneable facade; use SaLogic::new / StpUtil::stp_logic
已废弃:SaLogic 为可克隆门面,无需注册 Deprecated: SaLogic is a cloneable facade; nothing to register.
Sourcepub fn remove_stp_logic(_login_type: &str)
👎Deprecated: SaLogic is a cloneable facade; nothing to remove
pub fn remove_stp_logic(_login_type: &str)
SaLogic is a cloneable facade; nothing to remove
已废弃:SaLogic 为可克隆门面,无需移除 Deprecated: SaLogic is a cloneable facade; nothing to remove.
Sourcepub async fn get_token_session(
token: &TokenValue,
) -> Result<SaSession, SaTokenError>
pub async fn get_token_session( token: &TokenValue, ) -> Result<SaSession, SaTokenError>
获取 token-session
Sourcepub async fn get_token_session_current() -> Result<SaSession, SaTokenError>
pub async fn get_token_session_current() -> Result<SaSession, SaTokenError>
获取当前请求的 token-session
Sourcepub async fn save_token_session(
token: &TokenValue,
session: &SaSession,
) -> Result<(), SaTokenError>
pub async fn save_token_session( token: &TokenValue, session: &SaSession, ) -> Result<(), SaTokenError>
保存 token-session
Sourcepub async fn delete_token_session(
token: &TokenValue,
) -> Result<(), SaTokenError>
pub async fn delete_token_session( token: &TokenValue, ) -> Result<(), SaTokenError>
删除 token-session
Sourcepub async fn kick_out_by_token(token: &TokenValue) -> Result<(), SaTokenError>
pub async fn kick_out_by_token(token: &TokenValue) -> Result<(), SaTokenError>
按 token 踢人下线
Sourcepub async fn with_grant_scope<F, T>(future: F) -> Twhere
F: Future<Output = T>,
pub async fn with_grant_scope<F, T>(future: F) -> Twhere
F: Future<Output = T>,
在一段异步逻辑内启用「授权快照」:期间同一账号的权限/角色只读一次。 Enables a per-scope authorization snapshot inside an async block.
Sourcepub async fn check_permission_or_role(
login_id: impl LoginId,
permissions: &[&str],
roles: &[&str],
) -> Result<(), SaTokenError>
pub async fn check_permission_or_role( login_id: impl LoginId, permissions: &[&str], roles: &[&str], ) -> Result<(), SaTokenError>
组合校验:权限集合 ∪ 角色集合中任一命中即通过(供 #[sa_check_or] 宏使用)。
Combined check: passes when any of the permissions or roles matches.
Sourcepub fn builder(login_id: impl LoginId) -> TokenBuilder
pub fn builder(login_id: impl LoginId) -> TokenBuilder
Sourcepub fn request_sign() -> Result<RequestSign, SaTokenError>
pub fn request_sign() -> Result<RequestSign, SaTokenError>
Build a signer from config (sign_secret_key). Errors if the secret is missing.
用配置中的 sign_secret_key 构造签名器;密钥缺失则报错。
Sourcepub async fn sign_params(
params: BTreeMap<String, String>,
) -> Result<BTreeMap<String, String>, SaTokenError>
pub async fn sign_params( params: BTreeMap<String, String>, ) -> Result<BTreeMap<String, String>, SaTokenError>
Create signed params (timestamp + nonce + sign).
创建已签名参数(timestamp + nonce + sign)。
Sourcepub async fn check_sign(
params: &BTreeMap<String, String>,
) -> Result<(), SaTokenError>
pub async fn check_sign( params: &BTreeMap<String, String>, ) -> Result<(), SaTokenError>
Verify request signature from the sign field.
校验请求中 sign 字段的签名。
Sourcepub async fn get_same_token() -> Result<String, SaTokenError>
pub async fn get_same_token() -> Result<String, SaTokenError>
Get current Same-Token (create if missing). 获取当前 Same-Token(不存在则创建)。
Sourcepub async fn refresh_same_token() -> Result<String, SaTokenError>
pub async fn refresh_same_token() -> Result<String, SaTokenError>
Refresh Same-Token. 刷新 Same-Token。
Sourcepub async fn check_same_token(token: &str) -> Result<(), SaTokenError>
pub async fn check_same_token(token: &str) -> Result<(), SaTokenError>
Check a Same-Token value. 校验 Same-Token 值。
Sourcepub async fn create_temp_token(
value: impl Into<String>,
timeout_secs: i64,
) -> Result<String, SaTokenError>
pub async fn create_temp_token( value: impl Into<String>, timeout_secs: i64, ) -> Result<String, SaTokenError>
Create a short-lived temp token in the default namespace. 在默认命名空间创建短时临时令牌。
Sourcepub async fn parse_temp_token(
token: &str,
) -> Result<TempTokenRecord, SaTokenError>
pub async fn parse_temp_token( token: &str, ) -> Result<TempTokenRecord, SaTokenError>
Parse a temp token from the default namespace. 解析默认命名空间中的临时令牌。
Sourcepub async fn delete_temp_token(token: &str) -> Result<(), SaTokenError>
pub async fn delete_temp_token(token: &str) -> Result<(), SaTokenError>
Delete a temp token from the default namespace. 删除默认命名空间中的临时令牌。
Trait Implementations§
Auto Trait Implementations§
impl Freeze for StpUtil
impl RefUnwindSafe for StpUtil
impl Send for StpUtil
impl Sync for StpUtil
impl Unpin for StpUtil
impl UnsafeUnpin 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> 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 more