pub struct ApiKeyAuthLayer { /* private fields */ }Expand description
Tower Layer that enforces API key authentication on every non-OPTIONS request.
Wrap only the routes that need protection. Public routes (e.g. /pjs/health)
should live in a separate router that is merged without this layer:
ⓘ
let protected = protected_routes().layer(ApiKeyAuthLayer::new(config));
let router = Router::new()
.merge(public_routes())
.merge(protected)
.layer(apply_common_layers());Authentication accepts tokens from two header sources (first match wins):
Authorization: Bearer <token>X-PJS-API-Key: <token>
On failure the layer returns 401 Unauthorized with a JSON body
{"error":"Unauthorized"}.
Implementations§
Source§impl ApiKeyAuthLayer
impl ApiKeyAuthLayer
Sourcepub fn new(config: ApiKeyConfig) -> Self
pub fn new(config: ApiKeyConfig) -> Self
Construct from a pre-built ApiKeyConfig.
Trait Implementations§
Source§impl Clone for ApiKeyAuthLayer
impl Clone for ApiKeyAuthLayer
Source§fn clone(&self) -> ApiKeyAuthLayer
fn clone(&self) -> ApiKeyAuthLayer
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 Freeze for ApiKeyAuthLayer
impl RefUnwindSafe for ApiKeyAuthLayer
impl Send for ApiKeyAuthLayer
impl Sync for ApiKeyAuthLayer
impl Unpin for ApiKeyAuthLayer
impl UnsafeUnpin for ApiKeyAuthLayer
impl UnwindSafe for ApiKeyAuthLayer
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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