Skip to main content

sa_token_core/token/
validator.rs

1// Author: 金书记
2//
3//! Token 验证器
4
5use crate::error::{SaTokenError, SaTokenResult};
6use crate::token::TokenInfo;
7
8/// Token 验证器 | Token Validator
9///
10/// 用于验证 Token 的有效性和格式
11/// Used to validate token validity and format
12///
13/// # 使用示例 | Usage Example
14///
15/// ```rust,ignore
16/// use sa_token_core::TokenValidator;
17///
18/// // 验证 Token 信息 | Validate token info
19/// TokenValidator::validate(&token_info)?;
20///
21/// // 检查 Token 格式 | Check token format
22/// TokenValidator::check_format("my-token-123")?;
23/// ```
24pub struct TokenValidator;
25
26impl TokenValidator {
27    /// 验证 token 是否有效 | Validate if Token is Valid
28    ///
29    /// 检查 Token 是否过期
30    /// Check if token is expired
31    ///
32    /// # 参数 | Parameters
33    /// - `token_info`: Token 信息 | Token information
34    ///
35    /// # 返回 | Returns
36    /// - `Ok(())`: Token 有效 | Token is valid
37    /// - `Err(TokenExpired)`: Token 已过期 | Token has expired
38    pub fn validate(token_info: &TokenInfo) -> SaTokenResult<()> {
39        // 检查是否过期 | Check if expired
40        if token_info.is_expired() {
41            return Err(SaTokenError::TokenExpired);
42        }
43
44        Ok(())
45    }
46
47    /// 检查 token 格式是否正确 | Check if Token Format is Correct
48    ///
49    /// 验证 Token 的基本格式要求
50    /// Validate basic format requirements of token
51    ///
52    /// # 参数 | Parameters
53    /// - `token`: Token 字符串 | Token string
54    ///
55    /// # 返回 | Returns
56    /// - `Ok(())`: 格式正确 | Format is correct
57    /// - `Err(TokenEmpty)`: Token 为空 | Token is empty
58    /// - `Err(TokenTooShort)`: Token 太短 | Token is too short
59    pub fn check_format(token: &str) -> SaTokenResult<()> {
60        if token.is_empty() {
61            return Err(SaTokenError::TokenEmpty);
62        }
63
64        if token.len() < 8 {
65            return Err(SaTokenError::TokenTooShort);
66        }
67
68        Ok(())
69    }
70}
71
72impl std::fmt::Debug for TokenValidator {
73    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
74        f.write_str("TokenValidator { .. }")
75    }
76}