StpUtil

Struct StpUtil 

Source
pub struct StpUtil;
Expand description

StpUtil - 权限认证工具类

提供便捷的认证和授权操作方法,类似于 Java 版 sa-token 的 StpUtil

Implementations§

Source§

impl StpUtil

Source

pub fn init_manager(manager: SaTokenManager)

初始化全局 SaTokenManager(应用启动时调用一次)

§示例
let manager = SaTokenConfig::builder()
    .storage(Arc::new(MemoryStorage::new()))
    .build();
StpUtil::init_manager(manager);
Source

pub async fn login(login_id: impl LoginId) -> SaTokenResult<TokenValue>

会话登录

§示例
// 支持字符串 ID
let token = StpUtil::login("user_123").await?;
 
// 支持数字 ID
let token = StpUtil::login(10001).await?;
let token = StpUtil::login(10001_i64).await?;
Source

pub async fn login_with_manager( manager: &SaTokenManager, login_id: impl Into<String>, ) -> SaTokenResult<TokenValue>

会话登录(带 manager 参数的版本,向后兼容)

Source

pub async fn logout(token: &TokenValue) -> SaTokenResult<()>

会话登出

Source

pub async fn logout_with_manager( manager: &SaTokenManager, token: &TokenValue, ) -> SaTokenResult<()>

Source

pub async fn kick_out(login_id: impl LoginId) -> SaTokenResult<()>

踢人下线(根据登录ID)

Source

pub async fn kick_out_with_manager( manager: &SaTokenManager, login_id: &str, ) -> SaTokenResult<()>

Source

pub async fn logout_by_login_id(login_id: impl LoginId) -> SaTokenResult<()>

强制登出(根据登录ID)

Source

pub async fn logout_by_token(token: &TokenValue) -> SaTokenResult<()>

根据 token 登出(别名方法,更直观)

Source

pub fn get_token_value() -> SaTokenResult<TokenValue>

获取当前请求的 token(无参数,从上下文获取)

§示例
// 在请求处理函数中
let token = StpUtil::get_token_value()?;
Source

pub async fn logout_current() -> SaTokenResult<()>

当前会话登出(无参数,从上下文获取 token)

§示例
// 在请求处理函数中
StpUtil::logout_current().await?;
Source

pub fn is_login_current() -> bool

检查当前会话是否登录(无参数,返回 bool)

§示例
// 在请求处理函数中
if StpUtil::is_login_current() {
    println!("当前用户已登录");
}
Source

pub fn check_login_current() -> SaTokenResult<()>

检查当前会话登录状态,未登录则抛出异常(无参数)

§示例
// 在请求处理函数中
StpUtil::check_login_current()?;
Source

pub fn get_login_id_as_string() -> SaTokenResult<String>

获取当前会话的 login_id(String 类型,无参数)

§示例
// 在请求处理函数中
let login_id = StpUtil::get_login_id_as_string()?;
Source

pub fn get_login_id_as_long() -> SaTokenResult<i64>

获取当前会话的 login_id(i64 类型,无参数)

§示例
// 在请求处理函数中
let user_id = StpUtil::get_login_id_as_long()?;
Source

pub fn get_token_info_current() -> SaTokenResult<Arc<TokenInfo>>

获取当前会话的 token 信息(无参数)

§示例
// 在请求处理函数中
let token_info = StpUtil::get_token_info_current()?;
println!("Token 创建时间: {:?}", token_info.create_time);
Source

pub async fn is_login(token: &TokenValue) -> bool

检查当前 token 是否已登录

Source

pub async fn is_login_by_login_id(login_id: impl LoginId) -> bool

根据登录 ID 检查是否已登录

§示例
let is_logged_in = StpUtil::is_login_by_login_id("user_123").await;
let is_logged_in = StpUtil::is_login_by_login_id(10001).await;
Source

pub async fn is_login_with_manager( manager: &SaTokenManager, token: &TokenValue, ) -> bool

Source

pub async fn check_login(token: &TokenValue) -> SaTokenResult<()>

检查当前 token 是否已登录,如果未登录则抛出异常

Source

pub async fn get_token_info(token: &TokenValue) -> SaTokenResult<TokenInfo>

获取 token 信息

Source

pub async fn get_login_id(token: &TokenValue) -> SaTokenResult<String>

获取当前 token 的登录ID

Source

pub async fn get_login_id_or_default( token: &TokenValue, default: impl Into<String>, ) -> String

获取当前 token 的登录ID,如果未登录则返回默认值

Source

pub async fn get_token_by_login_id( login_id: impl LoginId, ) -> SaTokenResult<TokenValue>

根据登录 ID 获取当前用户的 token

§示例
let token = StpUtil::get_token_by_login_id("user_123").await?;
let token = StpUtil::get_token_by_login_id(10001).await?;
Source

pub async fn get_all_tokens_by_login_id( login_id: impl LoginId, ) -> SaTokenResult<Vec<TokenValue>>

根据登录 ID 获取所有在线的 token 列表(支持多设备登录)

§示例
let tokens = StpUtil::get_all_tokens_by_login_id("user_123").await?;
Source

pub async fn get_session(login_id: impl LoginId) -> SaTokenResult<SaSession>

获取当前登录账号的 Session

Source

pub async fn save_session(session: &SaSession) -> SaTokenResult<()>

保存 Session

Source

pub async fn delete_session(login_id: impl LoginId) -> SaTokenResult<()>

删除 Session

Source

pub async fn set_session_value<T: Serialize>( login_id: impl LoginId, key: &str, value: T, ) -> SaTokenResult<()>

在 Session 中设置值

Source

pub async fn get_session_value<T: DeserializeOwned>( login_id: impl LoginId, key: &str, ) -> SaTokenResult<Option<T>>

从 Session 中获取值

Source

pub fn create_token(token_value: impl Into<String>) -> TokenValue

创建一个新的 token(但不登录)

Source

pub fn is_valid_token_format(token: &str) -> bool

检查 token 格式是否有效(仅检查格式,不检查是否存在于存储中)

Source§

impl StpUtil

Source

pub async fn set_permissions( login_id: impl LoginId, permissions: Vec<String>, ) -> SaTokenResult<()>

为用户添加权限

Source

pub async fn add_permission( login_id: impl LoginId, permission: impl Into<String>, ) -> SaTokenResult<()>

为用户添加单个权限

Source

pub async fn remove_permission( login_id: impl LoginId, permission: &str, ) -> SaTokenResult<()>

移除用户的某个权限

Source

pub async fn clear_permissions(login_id: impl LoginId) -> SaTokenResult<()>

清除用户的所有权限

Source

pub async fn get_permissions(login_id: impl LoginId) -> Vec<String>

获取用户的所有权限

Source

pub async fn has_permission(login_id: impl LoginId, permission: &str) -> bool

检查用户是否拥有指定权限

Source

pub async fn has_all_permissions( login_id: impl LoginId, permissions: &[&str], ) -> bool

检查用户是否拥有所有指定权限(AND 逻辑)

Source

pub async fn has_permissions_and( login_id: impl LoginId, permissions: &[&str], ) -> bool

检查用户是否拥有所有指定权限(别名,AND 逻辑)

Source

pub async fn has_any_permission( login_id: impl LoginId, permissions: &[&str], ) -> bool

检查用户是否拥有任一指定权限(OR 逻辑)

Source

pub async fn has_permissions_or( login_id: impl LoginId, permissions: &[&str], ) -> bool

检查用户是否拥有任一指定权限(别名,OR 逻辑)

Source

pub async fn check_permission( login_id: impl LoginId, permission: &str, ) -> SaTokenResult<()>

检查权限,如果没有则抛出异常

Source§

impl StpUtil

Source

pub async fn set_roles( login_id: impl LoginId, roles: Vec<String>, ) -> SaTokenResult<()>

为用户设置角色

Source

pub async fn add_role( login_id: impl LoginId, role: impl Into<String>, ) -> SaTokenResult<()>

为用户添加单个角色

Source

pub async fn remove_role( login_id: impl LoginId, role: &str, ) -> SaTokenResult<()>

移除用户的某个角色

Source

pub async fn clear_roles(login_id: impl LoginId) -> SaTokenResult<()>

清除用户的所有角色

Source

pub async fn get_roles(login_id: impl LoginId) -> Vec<String>

获取用户的所有角色

Source

pub async fn has_role(login_id: impl LoginId, role: &str) -> bool

检查用户是否拥有指定角色

Source

pub async fn has_all_roles(login_id: impl LoginId, roles: &[&str]) -> bool

检查用户是否拥有所有指定角色(AND 逻辑)

Source

pub async fn has_roles_and(login_id: impl LoginId, roles: &[&str]) -> bool

检查用户是否拥有所有指定角色(别名,AND 逻辑)

Source

pub async fn has_any_role(login_id: impl LoginId, roles: &[&str]) -> bool

检查用户是否拥有任一指定角色(OR 逻辑)

Source

pub async fn has_roles_or(login_id: impl LoginId, roles: &[&str]) -> bool

检查用户是否拥有任一指定角色(别名,OR 逻辑)

Source

pub async fn check_role(login_id: impl LoginId, role: &str) -> SaTokenResult<()>

检查角色,如果没有则抛出异常

Source§

impl StpUtil

Source

pub async fn kick_out_batch<T: LoginId>( login_ids: &[T], ) -> SaTokenResult<Vec<Result<(), SaTokenError>>>

批量踢人下线

Source

pub async fn get_token_timeout(token: &TokenValue) -> SaTokenResult<Option<i64>>

获取 token 剩余有效时间(秒)

Source

pub async fn renew_timeout( token: &TokenValue, timeout_seconds: i64, ) -> SaTokenResult<()>

续期 token(重置过期时间)

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.