Expand description
§About
The library provides extractors for performing JWT authentication. Under the hood, tokens are parsed using the jsonwebtoken
crate. For more details, see the documentation.
§Example
In this example, the request token is validated and the username is extracted:
use {
axum::{Router, routing},
axum_jwt::{Claims, Decoder, jsonwebtoken::DecodingKey},
serde::Deserialize,
std::io::Error,
tokio::net::TcpListener,
};
#[derive(Deserialize)]
struct User {
sub: String,
}
async fn hello(Claims(u): Claims<User>) -> String {
format!("Hello, {}!", u.sub)
}
#[tokio::main]
async fn main() -> Result<(), Error> {
let decoder = Decoder::from_key(DecodingKey::from_secret(b"secret"));
let app = Router::new()
.route("/", routing::get(hello))
.with_state(decoder);
let listener = TcpListener::bind("0.0.0.0:3000").await?;
axum::serve(listener, app).await
}
In case of failed authentication, for example if the token is invalid or expired, a 401 Unauthorized
status code is returned.
Re-exports§
pub use crate::layer::layer;
pub use jsonwebtoken;
Modules§
- layer
- Middleware types and traits.
Structs§
- Bearer
- The token extraction from a header with
Bearer
authentication scheme. - Claims
- JWT extractor type returning only claims.
- Decoder
- A decoder for JSON Web Tokens (JWTs).
- Token
- JWT extractor type.
Enums§
- Error
- Errors that can occur during authentication.
Traits§
- Extract
- Trait for token extraction.