sa_token_plugin_rocket/
lib.rs

1// Author: 金书记
2//
3//! # sa-token-plugin-rocket
4//! 
5//! Rocket框架集成插件 - 一站式认证授权解决方案
6//! 
7//! ## 快速开始
8//! 
9//! 只需要导入这一个包,即可使用所有功能:
10//! 
11//! ```toml
12//! [dependencies]
13//! sa-token-plugin-rocket = "0.1.3"  # 默认使用内存存储
14//! # 或者使用 Redis 存储
15//! sa-token-plugin-rocket = { version = "0.1.3", features = ["redis"] }
16//! ```
17//! 
18//! ## 使用示例
19//! 
20//! ```rust,ignore
21//! use rocket::{State, get};
22//! use sa_token_plugin_rocket::*;  // 一次性导入所有功能
23//! use std::sync::Arc;
24//! 
25//! // 用户信息接口 - 需要登录
26//! #[get("/user/info")]
27//! async fn user_info(token: SaTokenGuard) -> String {
28//!     format!("User ID: {}", token.token().as_str())
29//! }
30//! 
31//! // 管理员接口 - 需要权限
32//! #[get("/admin/users")]
33//! async fn admin_users(login_id: LoginIdGuard) -> String {
34//!     format!("Admin: {}", login_id.login_id())
35//! }
36//! 
37//! #[rocket::main]
38//! async fn main() {
39//!     // 1. 初始化(使用内存存储,已重新导出)
40//!     let state = SaTokenState::builder()
41//!         .storage(Arc::new(MemoryStorage::new()))
42//!         .timeout(7200)
43//!         .build();
44//!     
45//!     // 2. 创建 Rocket 实例
46//!     rocket::build()
47//!         // 基础中间件 - 提取并验证 token
48//!         .attach(SaTokenLayer::new(state.clone()))
49//!         // 登录检查中间件 - 应用于 /user 路径
50//!         .attach(SaCheckLoginFairing::new(state.clone()))
51//!         // 权限检查中间件 - 应用于 /admin 路径
52//!         .attach(SaCheckPermissionFairing::new(state.clone(), "admin"))
53//!         .manage(state)
54//!         .mount("/", routes![user_info, admin_users])
55//!         .launch()
56//!         .await
57//!         .unwrap();
58//! }
59//! ```
60
61pub mod middleware;
62pub mod extractor;
63pub mod adapter;
64pub mod layer;
65pub mod state;
66
67// ============================================================================
68// Rocket 框架集成(本插件特有)
69// ============================================================================
70pub use middleware::{SaTokenFairing, SaCheckLoginFairing, SaCheckPermissionFairing, SaCheckRoleFairing};
71pub use layer::SaTokenLayer;
72pub use extractor::{SaTokenGuard, OptionalSaTokenGuard, LoginIdGuard};
73pub use adapter::{RocketRequestAdapter, RocketResponseAdapter};
74
75// ============================================================================
76// 重新导出核心功能(sa-token-core)
77// ============================================================================
78pub use sa_token_core::{self,
79    // 核心管理器
80    SaTokenManager, StpUtil,
81    
82    // 配置
83    SaTokenConfig,
84    config::TokenStyle,
85    
86    // Token 相关
87    TokenValue, TokenInfo,
88    
89    // 会话管理
90    SaSession,
91    
92    // 权限
93    PermissionChecker,
94    
95    // 错误处理
96    SaTokenError,
97    
98    // 事件系统
99    SaTokenEvent, SaTokenListener, SaTokenEventBus, LoggingListener,
100    
101    // JWT 支持
102    JwtManager, JwtClaims, JwtAlgorithm,
103    
104    // OAuth2 支持
105    OAuth2Manager, OAuth2Client, AuthorizationCode, AccessToken, OAuth2TokenInfo,
106    
107    // 安全特性
108    NonceManager, RefreshTokenManager,
109    
110    // WebSocket 认证
111    WsAuthManager, WsAuthInfo, WsTokenExtractor, DefaultWsTokenExtractor,
112    
113    // 在线用户管理
114    OnlineManager, OnlineUser, PushMessage, MessageType, MessagePusher, InMemoryPusher,
115    
116    // 分布式会话
117    DistributedSessionManager, DistributedSession, DistributedSessionStorage, 
118    ServiceCredential, InMemoryDistributedStorage,
119    
120    // 模块
121    token, error
122};
123
124// ============================================================================
125// 重新导出适配器接口(sa-token-adapter)
126// ============================================================================
127pub use sa_token_adapter::{self,
128    storage::SaStorage,
129    framework::FrameworkAdapter,
130};
131
132// ============================================================================
133// 重新导出宏(sa-token-macro)
134// ============================================================================
135pub use sa_token_macro::{
136    sa_check_login,
137    sa_check_permission,
138    sa_check_role,
139    sa_check_permissions_and,
140    sa_check_permissions_or,
141    sa_check_roles_and,
142    sa_check_roles_or,
143    sa_ignore,
144};
145
146// ============================================================================
147// 重新导出存储实现(根据 feature 条件编译)
148// ============================================================================
149
150/// 内存存储(默认启用)
151#[cfg(feature = "memory")]
152pub use sa_token_storage_memory::MemoryStorage;
153
154/// Redis 存储
155#[cfg(feature = "redis")]
156pub use sa_token_storage_redis::RedisStorage;
157
158/// 数据库存储
159#[cfg(feature = "database")]
160pub use sa_token_storage_database::DatabaseStorage;
161
162/// 重新导出 SaTokenState 和 SaTokenStateBuilder
163pub use state::{SaTokenState, SaTokenStateBuilder};