🪪 User identification, authentication, and authorization for Axum.
🪪 User identification, authentication, and authorization for Axum.
This crate provides user identification, authentication, and authorization
as a tower
middleware for axum
.
If offers:
AuthSession
to easily manage authentication and authorization. This is
also an extractor, so it can be used directly in your axum
handlers.AuthUser
and AuthnBackend
, allowing for any user
type and any user management backend. Your database? Yep. LDAP? Sure. An
auth provider? You bet.AuthzBackend
trait, which allows applications to define custom
permissions. Both user and group permissions are supported.login_required
and permission_required
macros. Or bring your own by using AuthSession
directly with
from_fn
.tower-sessions
for high-performing and ergonomic session management. Look ma, no deadlocks!
To use the crate in your project, add the following to your Cargo.toml
file:
[dependencies]
axum-login = "0.15.1"
We recommend reviewing our sqlite
example.
[!NOTE] See the crate documentation for usage information.
This crate uses #![forbid(unsafe_code)]
to ensure everything is implemented in 100% safe Rust.
We've put together a number of examples to help get you started. You're also welcome to open a discussion and ask additional questions you might have.
We appreciate all kinds of contributions, thank you!