Configuration des mots de passe
PasswordConfig configure la stratégie de hachage et de vérification des mots de passe pour toute l'application. Elle s'initialise une seule fois au démarrage via password_init().
Initialisation dans `main.rs`
use runique::prelude::{password_init, PasswordConfig, Manual};
#[tokio::main]
async fn main() {
// Argon2 automatique (défaut recommandé)
password_init(PasswordConfig::auto());
RuniqueApp::new()
// ...
.run()
.await;
}
Si
password_init()n'est pas appelé, Argon2 est utilisé par défaut.
Modes disponibles
Auto — Hachage automatique (recommandé)
Runique détecte si la valeur est déjà hachée et n'applique le hachage qu'une seule fois. L'algorithme est configurable.
// Argon2 par défaut
password_init(PasswordConfig::auto());
// Choisir l'algorithme
password_init(PasswordConfig::auto_with(Manual::Bcrypt));
password_init(PasswordConfig::auto_with(Manual::Scrypt));
Algorithmes supportés : Manual::Argon2, Manual::Bcrypt, Manual::Scrypt.
Manual — Hachage explicite
Le hachage n'est pas appliqué automatiquement dans finalize(). C'est le développeur qui appelle hash() manuellement.
password_init(PasswordConfig::manual(Manual::Argon2));
À utiliser si tu veux contrôler précisément quand et comment le mot de passe est haché.
Delegated — Authentification externe (OAuth / SSO)
Aucun mot de passe n'est géré par Runique. L'authentification est déléguée à un fournisseur externe.
use runique::prelude::{External};
password_init(PasswordConfig::oauth(External::GoogleOAuth));
password_init(PasswordConfig::oauth(External::Microsoft));
password_init(PasswordConfig::oauth(External::Ldap("ldap://...".to_string())));
Fournisseurs disponibles : GoogleOAuth, Microsoft, Apple, Ldap(url), Saml(url), Custom { name, authorize_url, token_url }.
Custom — Handler personnalisé
Implémente le trait PasswordHandler pour brancher ta propre logique de hachage/vérification.
use runique::prelude::{PasswordHandler, PasswordConfig};
struct MyHasher;
impl PasswordHandler for MyHasher {
fn name(&self) -> &str { "my_hasher" }
fn transform(&self, input: &str) -> Result<String, String> {
// logique de hachage
Ok(format!("hashed:{}", input))
}
fn verify(&self, input: &str, stored: &str) -> bool {
stored == format!("hashed:{}", input)
}
// ...
}
password_init(PasswordConfig::custom(MyHasher));
Utilisation dans le code
use runique::prelude::{hash, verify};
// Hacher un mot de passe (utilise la config globale)
let hashed = hash("mon_mdp")?;
// Vérifier un mot de passe contre un hash stocké
let ok = verify("mon_mdp", &user.password_hash);
Ces fonctions utilisent automatiquement la PasswordConfig initialisée au démarrage.
Dans les formulaires
Les champs TextField::password() sont hachés automatiquement dans finalize() en mode Auto. En mode Manual ou Delegated, aucun hachage automatique n'a lieu.
Voir → Types de champs — TextField
← Builder