pub struct TokenStore { /* private fields */ }Expand description
刷新令牌存储
管理刷新令牌的生命周期,支持轮换、撤销和重放检测。
使用 Mutex<HashMap> 进行线程安全存储。
Implementations§
Source§impl TokenStore
impl TokenStore
Sourcepub fn with_refresh_lifetime(self, seconds: i64) -> Self
pub fn with_refresh_lifetime(self, seconds: i64) -> Self
配置刷新令牌默认有效期(秒)
Sourcepub fn issue_family(
&self,
refresh_token: impl Into<String>,
user_id: i64,
) -> Result<StoredToken, AuthError>
pub fn issue_family( &self, refresh_token: impl Into<String>, user_id: i64, ) -> Result<StoredToken, AuthError>
签发新的令牌家族(用户登录时调用)
创建一个新的令牌家族,并存储初始刷新令牌。
返回创建的 StoredToken 供调用方返回给客户端。
Sourcepub fn refresh(
&self,
old_refresh_token: &str,
new_refresh_token: impl Into<String>,
) -> Result<StoredToken, TokenFamilyError>
pub fn refresh( &self, old_refresh_token: &str, new_refresh_token: impl Into<String>, ) -> Result<StoredToken, TokenFamilyError>
刷新令牌(轮换)
验证旧刷新令牌有效后,标记其为已使用,并签发新的刷新令牌(同一家族)。
§安全机制
- 如果旧令牌已被使用 -> 返回
ReplayDetected,撤销整个家族 - 如果旧令牌已被撤销 -> 返回
NotFound - 如果旧令牌已过期 -> 返回
Expired - 如果家族已被撤销 -> 返回
FamilyRevoked
Sourcepub fn revoke_token(&self, token: &str) -> Result<(), TokenFamilyError>
pub fn revoke_token(&self, token: &str) -> Result<(), TokenFamilyError>
撤销单个令牌
标记令牌为已撤销,但不影响家族中的其他令牌。 适用于用户登出单个设备的场景。
Sourcepub fn revoke_family(&self, family_id: &str) -> Result<usize, TokenFamilyError>
pub fn revoke_family(&self, family_id: &str) -> Result<usize, TokenFamilyError>
撤销整个令牌家族
撤销家族中的所有令牌。适用于:
- 用户修改密码
- 检测到重放攻击
- 管理员强制下线
Sourcepub fn revoke_user(&self, user_id: i64) -> usize
pub fn revoke_user(&self, user_id: i64) -> usize
撤销用户的所有令牌
撤销属于指定用户的所有令牌家族。 适用于用户修改密码、账户被禁用等场景。
Sourcepub fn get_token(&self, token: &str) -> Option<StoredToken>
pub fn get_token(&self, token: &str) -> Option<StoredToken>
获取令牌信息
Sourcepub fn family_tokens(&self, family_id: &str) -> Vec<StoredToken>
pub fn family_tokens(&self, family_id: &str) -> Vec<StoredToken>
获取家族中的所有令牌
Sourcepub fn is_family_revoked(&self, family_id: &str) -> bool
pub fn is_family_revoked(&self, family_id: &str) -> bool
检查家族是否已被撤销
Sourcepub fn token_count(&self) -> usize
pub fn token_count(&self) -> usize
返回当前存储的令牌数量
Sourcepub fn family_count(&self) -> usize
pub fn family_count(&self) -> usize
返回当前存储的家族数量
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for TokenStore
impl RefUnwindSafe for TokenStore
impl Send for TokenStore
impl Sync for TokenStore
impl Unpin for TokenStore
impl UnsafeUnpin for TokenStore
impl UnwindSafe for TokenStore
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