| Crates.io | torii |
| lib.rs | torii |
| version | 0.5.2 |
| created_at | 2025-01-27 19:35:55.587503+00 |
| updated_at | 2025-07-23 00:22:29.850194+00 |
| description | A modular authentication ecosystem for Rust applications |
| homepage | |
| repository | https://github.com/cmackenzie1/torii-rs |
| max_upload_size | |
| id | 1532775 |
| size | 188,451 |
Torii is a powerful authentication framework for Rust applications that gives you complete control over your users' data. Unlike hosted solutions like Auth0, Clerk, or WorkOS that store user information in their cloud, Torii lets you own and manage your authentication stack while providing modern auth features through a flexible plugin system.
Cargo.toml:[dependencies]
torii = { version = "0.2.0", features = ["sqlite", "password"] }
use torii::{Torii, SessionConfig};
use torii::sqlite::SqliteStorage;
use std::sync::Arc;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// Connect to database
let storage = SqliteStorage::connect("sqlite://auth.db?mode=rwc").await?;
// Run migrations
storage.migrate().await?;
// Create Torii instance
let repositories = Arc::new(storage.into_repository_provider());
let torii = Torii::new(repositories);
// Register a user
let user = torii.register_user_with_password("user@example.com", "secure_password").await?;
println!("Created user: {}", user.email);
// Login user
let (user, session) = torii.login_user_with_password(
"user@example.com",
"secure_password",
None, // user_agent
None, // ip_address
).await?;
println!("User logged in: {}", user.email);
println!("Session token: {}", session.token);
Ok(())
}
Choose the storage backend that fits your needs:
[dependencies]
torii = { version = "0.2.0", features = ["sqlite", "password"] }
[dependencies]
torii = { version = "0.2.0", features = ["seaorm-postgres", "password"] }
[dependencies]
torii = { version = "0.2.0", features = ["seaorm-mysql", "password"] }
// Enable password auth
let torii = Torii::new(repositories);
// Register user
let user = torii.register_user_with_password("user@example.com", "password").await?;
// Login
let (user, session) = torii.login_user_with_password(
"user@example.com",
"password",
Some("Mozilla/5.0...".to_string()), // user_agent
Some("192.168.1.1".to_string()), // ip_address
).await?;
use torii::{Torii, SessionConfig, JwtConfig, JwtAlgorithm};
let jwt_config = JwtConfig::new("your-secret-key", JwtAlgorithm::HS256);
let session_config = SessionConfig::default().with_jwt(jwt_config);
let torii = Torii::new(repositories).with_session_config(session_config);