pub struct RTokenManager { /* private fields */ }Expand description
The core token management component.
RTokenManager maintains an in-memory mapping of tokens to user IDs,
providing thread-safe token generation, validation, and invalidation.
§Thread Safety
This type uses Arc<Mutex<HashMap>> internally, making it safe to clone
and share across multiple actix-web worker threads. Each clone shares the
same underlying token storage.
§Usage
In a typical actix-web application:
- Create a single instance in your
main()function - Register it with
.app_data(web::Data::new(manager.clone())) - Inject it into handlers via
web::Data<RTokenManager>
§Example
use r_token::RTokenManager;
use actix_web::{web, App};
let manager = RTokenManager::new();
// In your actix-web app:
// App::new().app_data(web::Data::new(manager.clone()))
// Generate a token
let token = manager.login("user_12345").unwrap();
println!("Generated token: {}", token);
// Later, invalidate it
manager.logout(&token).unwrap();Implementations§
Source§impl RTokenManager
impl RTokenManager
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new token manager with empty storage.
In a typical actix-web application, call this once in main() and
register the instance using .app_data(web::Data::new(manager.clone())).
§Example
use r_token::RTokenManager;
let manager = RTokenManager::new();Sourcepub fn login(&self, id: &str) -> Result<String, RTokenError>
pub fn login(&self, id: &str) -> Result<String, RTokenError>
Generates a new authentication token for the given user ID.
This method creates a UUID v4 token, stores the token-to-user-ID mapping in memory, and returns the token string.
§Arguments
id- The unique identifier for the user (typically a user ID from your database)
§Returns
Returns Ok(String) containing the generated UUID v4 token on success,
or Err(RTokenError::MutexPoisoned) if the internal lock is poisoned.
§Example
use r_token::RTokenManager;
let manager = RTokenManager::new();
let token = manager.login("user_12345").expect("Failed to generate token");
assert_eq!(token.len(), 36); // UUID v4 lengthSourcepub fn logout(&self, token: &str) -> Result<(), RTokenError>
pub fn logout(&self, token: &str) -> Result<(), RTokenError>
Invalidates a token by removing it from storage.
After calling this method, the specified token will no longer be valid, and any requests using it will receive a 401 Unauthorized response.
§Arguments
token- The token string to invalidate
§Returns
Returns Ok(()) on success, or Err(RTokenError::MutexPoisoned)
if the internal lock is poisoned.
§Example
use r_token::RTokenManager;
let manager = RTokenManager::new();
let token = manager.login("user_12345").unwrap();
// Later, invalidate the token
manager.logout(&token).expect("Failed to logout");Trait Implementations§
Source§impl Clone for RTokenManager
impl Clone for RTokenManager
Source§fn clone(&self) -> RTokenManager
fn clone(&self) -> RTokenManager
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more