Skip to main content

AuthSession

Struct AuthSession 

Source
pub struct AuthSession<Backend>
where Backend: AuthnBackend,
{ pub user: Option<<Backend as AuthnBackend>::User>, pub backend: Backend, pub session: Session, /* private fields */ }
Expand description

A specialized session for identification, authentication, and authorization of users associated with a backend.

The session is generic over some backend which implements AuthnBackend. The backend may also implement AuthzBackend, in which case it will also supply authorization methods.

Methods for authenticating the session and logging a user in are provided.

Generally this session will be used in the context of some authentication workflow, for example via a frontend login form. There a user would provide their credentials, such as username and password, and via the backend the session would authenticate those credentials.

Once the supplied credentials have been authenticated, a user will be returned. In the case the credentials are invalid, no user will be returned. When we do have a user, it’s then possible to set the state of the session so that the user is logged in.

Fields§

§user: Option<<Backend as AuthnBackend>::User>

The user associated by the backend. None when not logged in.

§backend: Backend

The authentication and authorization backend.

§session: Session

The underlying session.

Implementations§

Source§

impl<Backend> AuthSession<Backend>
where Backend: AuthnBackend,

Source

pub async fn authenticate( &self, creds: <Backend as AuthnBackend>::Credentials, ) -> Result<Option<<Backend as AuthnBackend>::User>, Error<Backend>>

Verifies the provided credentials via the backend returning the authenticated user if valid and otherwise None.

Source

pub async fn login( &mut self, user: &<Backend as AuthnBackend>::User, ) -> Result<(), Error<Backend>>

Updates the session such that the user is logged in.

Source

pub async fn logout( &mut self, ) -> Result<Option<<Backend as AuthnBackend>::User>, Error<Backend>>

Updates the session such that the user is logged out.

Trait Implementations§

Source§

impl<Backend> Clone for AuthSession<Backend>
where Backend: Clone + AuthnBackend, <Backend as AuthnBackend>::User: Clone,

Source§

fn clone(&self) -> AuthSession<Backend>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<Backend> Debug for AuthSession<Backend>
where Backend: Debug + AuthnBackend, <Backend as AuthnBackend>::User: Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<S, Backend> FromRequestParts<S> for AuthSession<Backend>
where S: Send + Sync, Backend: AuthnBackend + Send + Sync + 'static,

Source§

type Rejection = (StatusCode, &'static str)

If the extractor fails it’ll use this “rejection” type. A rejection is a kind of error that can be converted into a response.
Source§

async fn from_request_parts( parts: &mut Parts, _state: &S, ) -> Result<AuthSession<Backend>, <AuthSession<Backend> as FromRequestParts<S>>::Rejection>

Perform the extraction.

Auto Trait Implementations§

§

impl<Backend> Freeze for AuthSession<Backend>
where Backend: Freeze, <Backend as AuthnBackend>::User: Freeze, <<Backend as AuthnBackend>::User as AuthUser>::Id: Freeze,

§

impl<Backend> !RefUnwindSafe for AuthSession<Backend>

§

impl<Backend> Send for AuthSession<Backend>

§

impl<Backend> Sync for AuthSession<Backend>

§

impl<Backend> Unpin for AuthSession<Backend>
where Backend: Unpin, <Backend as AuthnBackend>::User: Unpin, <<Backend as AuthnBackend>::User as AuthUser>::Id: Unpin,

§

impl<Backend> UnsafeUnpin for AuthSession<Backend>
where Backend: UnsafeUnpin, <Backend as AuthnBackend>::User: UnsafeUnpin, <<Backend as AuthnBackend>::User as AuthUser>::Id: UnsafeUnpin,

§

impl<Backend> !UnwindSafe for AuthSession<Backend>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<S, T> FromRequest<S, ViaParts> for T
where S: Send + Sync, T: FromRequestParts<S>,

Source§

type Rejection = <T as FromRequestParts<S>>::Rejection

If the extractor fails it’ll use this “rejection” type. A rejection is a kind of error that can be converted into a response.
Source§

fn from_request( req: Request<Body>, state: &S, ) -> impl Future<Output = Result<T, <T as FromRequest<S, ViaParts>>::Rejection>>

Perform the extraction.
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,