sa_token_plugin_actix_web/
lib.rs1pub mod middleware;
45pub mod extractor;
46pub mod adapter;
47
48pub use middleware::{SaTokenMiddleware, SaCheckLoginMiddleware};
52pub use extractor::{SaTokenExtractor, OptionalSaTokenExtractor, LoginIdExtractor};
53pub use adapter::{ActixRequestAdapter, ActixResponseAdapter};
54
55pub use sa_token_core::{
59 SaTokenManager, StpUtil,
61
62 SaTokenConfig,
64 config::TokenStyle,
65
66 TokenValue, TokenInfo,
68
69 SaSession,
71
72 PermissionChecker,
74
75 SaTokenError,
77
78 SaTokenEvent, SaTokenListener, SaTokenEventBus, LoggingListener,
80
81 JwtManager, JwtClaims, JwtAlgorithm,
83
84 OAuth2Manager, OAuth2Client, AuthorizationCode, AccessToken, OAuth2TokenInfo,
86
87 NonceManager, RefreshTokenManager,
89
90 WsAuthManager, WsAuthInfo, WsTokenExtractor, DefaultWsTokenExtractor,
92
93 OnlineManager, OnlineUser, PushMessage, MessageType, MessagePusher, InMemoryPusher,
95
96 DistributedSessionManager, DistributedSession, DistributedSessionStorage,
98 ServiceCredential, InMemoryDistributedStorage,
99};
100
101pub use sa_token_adapter::{
105 storage::SaStorage,
106 framework::FrameworkAdapter,
107};
108
109pub use sa_token_macro::{
113 sa_check_login,
114 sa_check_permission,
115 sa_check_role,
116 sa_check_permissions_and,
117 sa_check_permissions_or,
118 sa_check_roles_and,
119 sa_check_roles_or,
120 sa_ignore,
121};
122
123#[cfg(feature = "memory")]
129pub use sa_token_storage_memory::MemoryStorage;
130
131#[cfg(feature = "redis")]
133pub use sa_token_storage_redis::RedisStorage;
134
135#[cfg(feature = "database")]
137pub use sa_token_storage_database::DatabaseStorage;
138
139use std::sync::Arc;
140use actix_web::web::Data;
141
142pub type SaTokenData = Data<SaTokenState>;
144
145#[derive(Clone)]
147pub struct SaTokenState {
148 pub manager: Arc<SaTokenManager>,
149}
150
151impl SaTokenState {
152 pub fn builder() -> SaTokenStateBuilder {
154 SaTokenStateBuilder::new()
155 }
156}
157
158#[derive(Default)]
160pub struct SaTokenStateBuilder {
161 config_builder: sa_token_core::config::SaTokenConfigBuilder,
162}
163
164impl SaTokenStateBuilder {
165 pub fn new() -> Self {
166 Self::default()
167 }
168
169 pub fn storage(mut self, storage: Arc<dyn SaStorage>) -> Self {
170 self.config_builder = self.config_builder.storage(storage);
171 self
172 }
173
174 pub fn token_name(mut self, name: impl Into<String>) -> Self {
175 self.config_builder = self.config_builder.token_name(name);
176 self
177 }
178
179 pub fn timeout(mut self, timeout: i64) -> Self {
180 self.config_builder = self.config_builder.timeout(timeout);
181 self
182 }
183
184 pub fn active_timeout(mut self, timeout: i64) -> Self {
185 self.config_builder = self.config_builder.active_timeout(timeout);
186 self
187 }
188
189 pub fn auto_renew(mut self, enabled: bool) -> Self {
191 self.config_builder = self.config_builder.auto_renew(enabled);
192 self
193 }
194
195 pub fn is_concurrent(mut self, concurrent: bool) -> Self {
196 self.config_builder = self.config_builder.is_concurrent(concurrent);
197 self
198 }
199
200 pub fn is_share(mut self, share: bool) -> Self {
201 self.config_builder = self.config_builder.is_share(share);
202 self
203 }
204
205 pub fn token_style(mut self, style: sa_token_core::config::TokenStyle) -> Self {
207 self.config_builder = self.config_builder.token_style(style);
208 self
209 }
210
211 pub fn token_prefix(mut self, prefix: impl Into<String>) -> Self {
212 self.config_builder = self.config_builder.token_prefix(prefix);
213 self
214 }
215
216 pub fn jwt_secret_key(mut self, key: impl Into<String>) -> Self {
217 self.config_builder = self.config_builder.jwt_secret_key(key);
218 self
219 }
220
221 pub fn build(self) -> Data<SaTokenState> {
222 let manager = self.config_builder.build();
223
224 sa_token_core::StpUtil::init_manager(manager.clone());
226
227 Data::new(SaTokenState {
228 manager: Arc::new(manager),
229 })
230 }
231}
232