pub struct BasicAuthLayer { /* private fields */ }Expand description
Tower Layer that enforces HTTP Basic authentication on every request.
On success, the verified Claims are injected into request extensions so
the Ctx extractor in rok-auth can see the authenticated user without
re-verifying the credentials.
On failure the layer short-circuits and returns 401 Unauthorized with a
WWW-Authenticate: Basic realm="…" challenge header.
§Example
ⓘ
use rok_auth::Claims;
use rok_auth_basic::BasicAuthLayer;
let layer = BasicAuthLayer::new("My API", |user: String, pass: String| async move {
if user == "admin" && pass == std::env::var("API_PASS").unwrap_or_default() {
Some(Claims::new(user, vec!["admin"]))
} else {
None
}
});
let app = Router::new()
.route("/metrics", get(metrics_handler))
.layer(layer);Implementations§
Trait Implementations§
Source§impl Clone for BasicAuthLayer
impl Clone for BasicAuthLayer
Source§fn clone(&self) -> BasicAuthLayer
fn clone(&self) -> BasicAuthLayer
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for BasicAuthLayer
impl !UnwindSafe for BasicAuthLayer
impl Freeze for BasicAuthLayer
impl Send for BasicAuthLayer
impl Sync for BasicAuthLayer
impl Unpin for BasicAuthLayer
impl UnsafeUnpin for BasicAuthLayer
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more