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}