26 releases (14 breaking)
0.15.1 | Apr 10, 2024 |
---|---|
0.15.0 | Mar 20, 2024 |
0.14.0 | Mar 5, 2024 |
0.11.3 | Dec 31, 2023 |
0.4.0 | Nov 28, 2022 |
#43 in HTTP server
9,052 downloads per month
Used in 2 crates
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
.
If 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 youraxum
handlers. - Support for Arbitrary Users and Backends: Applications implement a
couple of traits,
AuthUser
andAuthnBackend
, 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
andpermission_required
macros. Or bring your own by usingAuthSession
directly withfrom_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.15.1"
🤸 Usage
We recommend reviewing our sqlite
example.
[!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
~8–15MB
~180K SLoC