Thanks to visit codestin.com
Credit goes to lib.rs

12 releases (breaking)

Uses new Rust 2024

0.10.0 Apr 12, 2026
0.9.0 Mar 11, 2026
0.8.0 Feb 27, 2026

#2099 in Authentication

Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App Codestin Search App

342 downloads per month
Used in 2 crates (via better-auth)

MIT/Apache

1MB
24K SLoC

Better Auth RS

The most comprehensive authentication framework for Rust. Inspired by Better Auth.

Note

v1 (v1 branch, alpha): complete rewrite with app-owned schema and full compatibility with better-auth@1.4.19.

Crates.io Documentation CI License better-auth compatibility

Features

  • Plugin Architecture — compose only the auth features you need
  • Type Safety — leverages Rust's type system for compile-time guarantees
  • Async First — built on Tokio with full async/await support
  • Database Agnostic — in-memory for development, PostgreSQL for production
  • Framework Integration — first-class Axum support with session extractors
  • OpenAPI — auto-generated API specification
  • Middleware — CSRF, CORS, rate limiting, body size limits
  • Database Hooks — intercept create/update/delete operations

Quick Start

[dependencies]
better-auth = "0.8"
use better_auth::{BetterAuth, AuthConfig};
use better_auth::plugins::EmailPasswordPlugin;
use better_auth::adapters::MemoryDatabaseAdapter;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let auth = BetterAuth::new(
            AuthConfig::new("your-very-secure-secret-key-at-least-32-chars-long")
                .base_url("http://localhost:3000"),
        )
        .database(MemoryDatabaseAdapter::new())
        .plugin(EmailPasswordPlugin::new().enable_signup(true))
        .build()
        .await?;

    // Mount as an Axum router (requires `axum` feature)
    // let app = auth.axum_router();

    Ok(())
}

See the Quick Start guide for a complete walkthrough including sign-up, sign-in, and session usage.

Plugins

Better Auth RS ships with a rich set of plugins. Enable only what you need:

Plugin Description
Email/Password Sign up/sign in with email & password, username support
Session Management Session listing, revocation, and token refresh
Password Management Password reset, change, and set flows
Email Verification Email verification workflows
Account Management Account linking and unlinking
OAuth Social sign-in via OAuth 2.0 providers
Two-Factor TOTP-based 2FA with backup codes
Organization Multi-tenant organizations with RBAC
Admin User management and administrative operations
API Key API key generation, rotation, and revocation
Passkey WebAuthn passkey authentication
Device Authorization Device flow for TVs, consoles, CLIs, and other input-constrained clients

See the Plugins documentation for usage details.

Feature Flags

Feature Description
axum Axum web framework integration
derive Derive macros for custom entity types (AuthUser, MemoryUser, etc.)
sqlx-postgres PostgreSQL database support via SQLx

Crate Structure

Crate Description
better-auth Main crate — re-exports and framework integration
better-auth-core Core abstractions: traits, config, middleware, error handling
better-auth-api Plugin implementations
better-auth-derive Derive macros for custom entity types

Documentation

Detailed guides and API reference are available in the docs/ directory:

Examples

# Basic usage (in-memory)
cargo run --example basic_usage

# Axum web server
cargo run --example axum_server --features axum

# PostgreSQL
cargo run --example postgres_usage --features sqlx-postgres

# Custom entity types with derive macros
cargo run --example custom_entities --features derive

# Custom ORM adapter
cargo run --example custom_orm_adapter

# Full-stack (better-auth frontend + better-auth-rs backend)
cargo run --manifest-path examples/fullstack/backend/Cargo.toml

See examples/README.md for detailed documentation on each example.

License

Licensed under either of:

at your option.

Dependencies

~21–43MB
~589K SLoC