2009-01-17 3 views
0

Je viens de commencer l'ajout d'une API REST sur une application de rails, et que je ne voulais exposer un contrôleur couple/actions, j'ai ajouté une méthode pour ApplicationController:Est-ce une approche raisonnable pour l'authentification HTTP BASIC avec une clé API?

def http_basic_authentication 
    if request.format == Mime::XML 
     authenticate_or_request_with_http_basic do |username, api_key| 
     self.current_user = User.find(:first, :from => 'users, accounts', :conditions => ["accounts.id = users.account_id AND accounts.api_key = ?", api_key]) 
     end 
    end 
    end 

Ce que je peux alors utiliser avec un before_filter sur mon contrôleur individuel/actions que je veux exposer. Quelqu'un a-t-il des commentaires, une révision de code ou une meilleure approche?

Répondre

1

Peut-être ce serait plus propre:

self.current_user = Account.find_by_api_key(api_key).user 
+0

Cela fonctionnerait s'il n'y avait pas plus d'un utilisateur par compte. Plutôt que de faire partie de l'API Key du modèle User, cela fait partie du modèle Account, et quand quelqu'un s'authentifie, ce sera avec son nom d'utilisateur et account.api_key. Donc, je ne suis pas sûr que le vôtre serait vraiment utile. –

Questions connexes