Pour mon autentification d'un utilisateur avec rails en utilisant la méthode "authenticate_or_request_with_http_basic" de Basic HTTP authentication, j'avais besoin de vérifer le mot de passe.
Pour celà, j'avais besoin de transformer le mot de passe saisi par l'utilisateur en md5 pour le comparer avec le md5 stocké en base (pour éviter de stocker des mots de passe en clair dans la base de données).
Et bien c'est très simple, il suffit de 2 lignes de code:
require 'digest/md5'
hash = Digest::MD5.hexdigest(password)
Dans le cas de mon application rails pour voir le code complet, ça donne:
class ApplicationController < ActionController::Base
before_filter :authenticate
protected
def authenticate
authenticate_or_request_with_http_basic do |username, password|
auth = User.auth?(username, password)
if(auth)
session[:auth], session[:username] = true, username
return true
end
return false
end
end
end
require 'digest/md5'
class User < ActiveRecord::Base
# return true if (username and hashed_password) are correct
def self.auth?(username, password)
hashed_password = Digest::MD5.hexdigest(password)
user = User.find(:first,
:conditions => "username='#{username}' and password='#{hashed_password}'" )
logger.info "#{username}/#{hashed_password} > auth? : #{!user.nil?}"
return !user.nil?
end
end
Aucun commentaire:
Enregistrer un commentaire