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
75pub use sa_token_core::{self, prelude::*};
76pub use sa_token_adapter::{self, storage::SaStorage, framework::FrameworkAdapter};
77pub use sa_token_macro::*;
78
79// ============================================================================
80// 重新导出存储实现(根据 feature 条件编译)
81// ============================================================================
82
83/// 内存存储(默认启用)
84#[cfg(feature = "memory")]
85pub use sa_token_storage_memory::MemoryStorage;
86
87/// Redis 存储
88#[cfg(feature = "redis")]
89pub use sa_token_storage_redis::RedisStorage;
90
91/// 数据库存储
92#[cfg(feature = "database")]
93pub use sa_token_storage_database::DatabaseStorage;
94
95/// 重新导出 SaTokenState 和 SaTokenStateBuilder
96pub use state::{SaTokenState, SaTokenStateBuilder};