31 releases (17 breaking)

0.18.0 Jul 20, 2025
0.17.0 Jan 5, 2025
0.16.0 Sep 4, 2024
0.15.3 Jun 10, 2024
0.4.0 Nov 28, 2022

#53 in HTTP server

Download history 8714/week @ 2025-09-23 8312/week @ 2025-09-30 6676/week @ 2025-10-07 8107/week @ 2025-10-14 8543/week @ 2025-10-21 7277/week @ 2025-10-28 7401/week @ 2025-11-04 6211/week @ 2025-11-11 6062/week @ 2025-11-18 6986/week @ 2025-11-25 8756/week @ 2025-12-02 7924/week @ 2025-12-09 7075/week @ 2025-12-16 5710/week @ 2025-12-23 5904/week @ 2025-12-30 7483/week @ 2026-01-06

27,735 downloads per month
Used in 7 crates

MIT license

78KB
1.5K SLoC

axum-login

🪪 User identification, authentication, and authorization for Axum.

🎨 Overview

This crate provides user identification, authentication, and authorization as a tower middleware for axum.

It offers:

  • User Identification, Authentication, and Authorization: Leverage AuthSession to easily manage authentication and authorization. This is also an extractor, so it can be used directly in your axum handlers.
  • Support for Arbitrary Users and Backends: Applications implement a couple of traits, AuthUser and AuthnBackend, allowing for any user type and any user management backend. Your database? Yep. LDAP? Sure. An auth provider? You bet.
  • User and Group Permissions: Authorization is supported via the AuthzBackend trait, which allows applications to define custom permissions. Both user and group permissions are supported.
  • Convenient Route Protection: Middleware for protecting access to routes are provided via the login_required and permission_required macros. Or bring your own by using AuthSession directly with from_fn.
  • Rock-solid Session Management: Uses tower-sessions for high-performing and ergonomic session management. Look ma, no deadlocks!

📦 Install

To use the crate in your project, add the following to your Cargo.toml file:

[dependencies]
axum-login = "0.18.0"

🤸 Usage

We recommend reviewing our sqlite example. There is also a template for cargo-generate using postgres.

[!NOTE] See the crate documentation for usage information.

🦺 Safety

This crate uses #![forbid(unsafe_code)] to ensure everything is implemented in 100% safe Rust.

🛟 Getting Help

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.

👯 Contributing

We appreciate all kinds of contributions, thank you!

Dependencies

~12–16MB
~210K SLoC