A l’heure de la publication de cet article, je débute mon cours Ruby et Rails dans mon ancienne licence, à Saint-Quentin (Picardie).
Alors pour ne pas vous rendre jaloux, je vous propose un article qui traite d’un sujet dont je ne parlerai pas dans ce cours (sauf si la question est posée) car c’est relatif à Rails 2.3.
Comme je le disais déjà lundi, Rails 2.3 supporte une nouvelle méthode, permettant de gérer une identification HTTP. Vous savez, lorsque votre navigateur vous affiche une popup vous demandant login et mot de passe. Cela peut notamment être assez pratique afin de ne pas s’embêter à intégrer d’interface d’identification autre que celle-ci.
Mais comment ça fonctionne ?
Une nouvelle méthode est à notre disposition : authenticate_or_request_with_http_digest.
Celle-ci prends un argument, le « realm » (message affiché dans la fenêtre de connexion. Et transmet, en yield, le nom d’utilisateur ayant été transmis.
Il vous suffit alors de récupérer le mot de passe de cet utilisateur et de le renvoyer pour que, si les deux correspondent, l’identification soit acceptée. Dans le cas contraire, on vous jette.
Exemple :
users = {"damien" => "monpass"}
authenticate_or_request_with_http_digest("Identification requise") do |name|
users[name] || false
end
Nous appellons la méthode avec le message de connexion. Celle-ci nous renvoie le pseudonyme et nous n’avons plus qu’à renvoyer le mot de passe approprié à celui-ci pour que la méthode fasse la comparaison et qu’elle nous renvoie true si c’est ok. Ou bien qu’elle refuse l’identification si cela ne l’est pas
Après si vous ne comprenez pas comment fonctionne le « do » et la pseudo-boucle, il fallait venir à mon cours parce que yield par contre, j’en parle ![]()
Quant à mes slides, je les publierai peut-être plus tard.





w00t w00t Damz!
Je risque de passer dans ton cours si j’ai besoin de la connexion^^ Tu verras mes camarades sont tous super sympa
C’est la même chose que authenticate_or_request_with_http_basic mais avec le mot de passe encodé, j’ai juste ?
Non. Celle que tu mentionne demande une valeur false ou true, correspondant à la correspondance ou non du login & du mot de passe.
Ici, c’est la méthode d’identification qui retourne false ou true en fonction de si la correspondance est effective ou non.
OK, en effet, merci