1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//! Token 模块
//!
//! 提供各种 Token 的生成、验证和管理功能。
//!
//! ## 子模块
//!
//! - **jwt**: JSON Web Token (JWT) 的生成和验证(需启用 `jwt` feature)
//! - **session**: Session Token 管理
//! - **refresh**: Refresh Token 机制
//!
//! ## Features
//!
//! - `jwt` - 启用 JWT 支持(默认启用)
//!
//! ## JWT 示例
//!
//! use authrs::token::jwt::{JwtBuilder, JwtValidator};
//!
//! // 创建 JWT
//! let secret = b"my-secret-key-at-least-32-bytes!";
//! let token = JwtBuilder::new()
//! .subject("user123")
//! .issuer("my-app")
//! .expires_in_hours(24)
//! .claim("role", "admin")
//! .build_with_secret(secret)
//! .unwrap();
//!
//! // 验证 JWT
//! let validator = JwtValidator::new(secret);
//! let claims = validator.validate(&token).unwrap();
//! assert_eq!(claims.sub, Some("user123".to_string()));
//! ```
//!
//! ## Session Token 示例
//!
//! ```rust
//! # tokio::runtime::Runtime::new().unwrap().block_on(async {
//! use authrs::token::session::{SessionManager, SessionConfig};
//!
//! // 创建 session 管理器(使用内存存储)
//! let config = SessionConfig::default();
//! let manager = SessionManager::new(config);
//!
//! // 创建 session
//! let session = manager.create("user123").await.unwrap();
//!
//! // 验证 session
//! if let Some(s) = manager.get(&session.id).await {
//! assert_eq!(s.user_id, "user123");
//! }
//! # });
//! ```
//!
//! ## Refresh Token 示例
//!
//! ```rust
//! # tokio::runtime::Runtime::new().unwrap().block_on(async {
//! use authrs::token::refresh::{RefreshTokenManager, RefreshConfig};
//!
//! // 创建 Refresh Token 管理器
//! let config = RefreshConfig::default();
//! let manager = RefreshTokenManager::new(config);
//!
//! // 生成 Refresh Token
//! let token = manager.generate("user123").await.unwrap();
//!
//! // 使用 Refresh Token(会自动轮换)
//! let result = manager.use_token(&token.token).await.unwrap();
//! if let Some(new_token) = result.new_token {
//! println!("New token generated");
//! }
//! # });
//! ```
// JWT 导出
pub use ;
// Refresh Token 导出
pub use ;
// Session 导出
pub use ;