pub struct TokenAuthenticator { /* private fields */ }Expand description
Token-based WebSocket authenticator
§Examples
use reinhardt_websockets::auth::{TokenAuthenticator, WebSocketAuthenticator, SimpleAuthUser};
use reinhardt_websockets::WebSocketConnection;
use tokio::sync::mpsc;
use std::sync::Arc;
let authenticator = TokenAuthenticator::new(vec![
("valid_token".to_string(), SimpleAuthUser::new(
"user_1".to_string(),
"alice".to_string(),
vec!["chat.read".to_string()],
)),
]);
let (tx, _rx) = mpsc::unbounded_channel();
let conn = Arc::new(WebSocketConnection::new("conn_1".to_string(), tx));
let user = authenticator.authenticate(&conn, "valid_token").await.unwrap();
assert_eq!(user.username(), "alice");Implementations§
Source§impl TokenAuthenticator
impl TokenAuthenticator
Sourcepub fn new(tokens: Vec<(String, SimpleAuthUser)>) -> Self
pub fn new(tokens: Vec<(String, SimpleAuthUser)>) -> Self
Create a new token authenticator with predefined tokens
Sourcepub fn add_token(&mut self, token: String, user: SimpleAuthUser)
pub fn add_token(&mut self, token: String, user: SimpleAuthUser)
Add a token to the authenticator
Sourcepub fn remove_token(&mut self, token: &str) -> Option<SimpleAuthUser>
pub fn remove_token(&mut self, token: &str) -> Option<SimpleAuthUser>
Remove a token from the authenticator
Trait Implementations§
Source§impl WebSocketAuthenticator for TokenAuthenticator
impl WebSocketAuthenticator for TokenAuthenticator
Source§fn authenticate<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_connection: &'life1 Arc<WebSocketConnection>,
credentials: &'life2 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Box<dyn AuthUser>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn authenticate<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_connection: &'life1 Arc<WebSocketConnection>,
credentials: &'life2 str,
) -> Pin<Box<dyn Future<Output = AuthResult<Box<dyn AuthUser>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Authenticate a WebSocket connection Read more
Auto Trait Implementations§
impl Freeze for TokenAuthenticator
impl RefUnwindSafe for TokenAuthenticator
impl Send for TokenAuthenticator
impl Sync for TokenAuthenticator
impl Unpin for TokenAuthenticator
impl UnsafeUnpin for TokenAuthenticator
impl UnwindSafe for TokenAuthenticator
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more