#authorization #session #axum #authentication

axum-login

🪪 User identification, authentication, and authorization for Axum

30 releases (16 breaking)

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

#53 in HTTP server

Download history 4178/week @ 2025-01-06 3630/week @ 2025-01-13 4580/week @ 2025-01-20 4510/week @ 2025-01-27 5530/week @ 2025-02-03 6417/week @ 2025-02-10 5358/week @ 2025-02-17 8396/week @ 2025-02-24 7194/week @ 2025-03-03 7606/week @ 2025-03-10 8193/week @ 2025-03-17 5950/week @ 2025-03-24 6761/week @ 2025-03-31 5005/week @ 2025-04-07 5849/week @ 2025-04-14 7071/week @ 2025-04-21

25,012 downloads per month
Used in 5 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.17.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

~7–15MB
~177K SLoC