sa_token_plugin_actix_web/
lib.rs1pub mod middleware;
45pub mod extractor;
46pub mod adapter;
47pub mod layer;
48
49pub use middleware::SaCheckLoginMiddleware;
53pub use layer::SaTokenLayer;
54
55pub use middleware::SaTokenMiddleware;
57pub use extractor::{SaTokenExtractor, OptionalSaTokenExtractor, LoginIdExtractor};
58pub use adapter::{ActixRequestAdapter, ActixResponseAdapter};
59
60pub use sa_token_core::{self,
64 SaTokenManager, StpUtil,
66
67 SaTokenConfig,
69 config::TokenStyle,
70
71 TokenValue, TokenInfo,
73
74 SaSession,
76
77 PermissionChecker,
79
80 SaTokenError,
82
83 SaTokenEvent, SaTokenListener, SaTokenEventBus, LoggingListener,
85
86 JwtManager, JwtClaims, JwtAlgorithm,
88
89 OAuth2Manager, OAuth2Client, AuthorizationCode, AccessToken, OAuth2TokenInfo,
91
92 NonceManager, RefreshTokenManager,
94
95 WsAuthManager, WsAuthInfo, WsTokenExtractor, DefaultWsTokenExtractor,
97
98 OnlineManager, OnlineUser, PushMessage, MessageType, MessagePusher, InMemoryPusher,
100
101 DistributedSessionManager, DistributedSession, DistributedSessionStorage,
103 ServiceCredential, InMemoryDistributedStorage,
104
105 token, error
107};
108
109pub use sa_token_adapter::{self,
113 storage::SaStorage,
114 framework::FrameworkAdapter,
115};
116
117pub use sa_token_macro::{
121 sa_check_login,
122 sa_check_permission,
123 sa_check_role,
124 sa_check_permissions_and,
125 sa_check_permissions_or,
126 sa_check_roles_and,
127 sa_check_roles_or,
128 sa_ignore,
129};
130
131#[cfg(feature = "memory")]
137pub use sa_token_storage_memory::MemoryStorage;
138
139#[cfg(feature = "redis")]
141pub use sa_token_storage_redis::RedisStorage;
142
143#[cfg(feature = "database")]
145pub use sa_token_storage_database::DatabaseStorage;
146
147use std::sync::Arc;
148use actix_web::web::Data;
149
150pub type SaTokenData = Data<SaTokenState>;
152
153#[derive(Clone)]
155pub struct SaTokenState {
156 pub manager: Arc<SaTokenManager>,
157}
158
159impl SaTokenState {
160 pub fn builder() -> SaTokenStateBuilder {
162 SaTokenStateBuilder::new()
163 }
164}
165
166#[derive(Default)]
168pub struct SaTokenStateBuilder {
169 config_builder: sa_token_core::config::SaTokenConfigBuilder,
170}
171
172impl SaTokenStateBuilder {
173 pub fn new() -> Self {
174 Self::default()
175 }
176
177 pub fn storage(mut self, storage: Arc<dyn SaStorage>) -> Self {
178 self.config_builder = self.config_builder.storage(storage);
179 self
180 }
181
182 pub fn token_name(mut self, name: impl Into<String>) -> Self {
183 self.config_builder = self.config_builder.token_name(name);
184 self
185 }
186
187 pub fn timeout(mut self, timeout: i64) -> Self {
188 self.config_builder = self.config_builder.timeout(timeout);
189 self
190 }
191
192 pub fn active_timeout(mut self, timeout: i64) -> Self {
193 self.config_builder = self.config_builder.active_timeout(timeout);
194 self
195 }
196
197 pub fn auto_renew(mut self, enabled: bool) -> Self {
199 self.config_builder = self.config_builder.auto_renew(enabled);
200 self
201 }
202
203 pub fn is_concurrent(mut self, concurrent: bool) -> Self {
204 self.config_builder = self.config_builder.is_concurrent(concurrent);
205 self
206 }
207
208 pub fn is_share(mut self, share: bool) -> Self {
209 self.config_builder = self.config_builder.is_share(share);
210 self
211 }
212
213 pub fn token_style(mut self, style: sa_token_core::config::TokenStyle) -> Self {
215 self.config_builder = self.config_builder.token_style(style);
216 self
217 }
218
219 pub fn token_prefix(mut self, prefix: impl Into<String>) -> Self {
220 self.config_builder = self.config_builder.token_prefix(prefix);
221 self
222 }
223
224 pub fn jwt_secret_key(mut self, key: impl Into<String>) -> Self {
225 self.config_builder = self.config_builder.jwt_secret_key(key);
226 self
227 }
228
229 pub fn build(self) -> Data<SaTokenState> {
230 let manager = self.config_builder.build();
231
232 sa_token_core::StpUtil::init_manager(manager.clone());
234
235 Data::new(SaTokenState {
236 manager: Arc::new(manager),
237 })
238 }
239}
240