2011-03-15 5 views
0

Je suis en train de créer une API pour mon application rails. J'essaie de réutiliser les mêmes contrôleurs pour l'API et la logique applicative. Les requêtes sans authentification d'un utilisateur sont correctes mais comment implémenter si certaines actions nécessitent une authentification. J'utilise authlogic, pour éditer les gens ont besoin d'autorisations spécifiques que je vérifie dans le before_filter. Si j'implémente une API utilisant l'authentification de base HTTP, comment puis-je me différencier?Implémentation de l'API pour une application Rails

Répondre

1

Je pense qu'il y a deux parties à la réponse. Tout d'abord, vous devez configurer l'authentification de base http avec authlogic. Les détails pour ce faire sont contenus dans cette réponse SO: Rails: Basic Authentication with Authlogic

Ensuite, vous devez faire la différence entre les appels API et les appels de navigateur normaux dans votre contrôleur. En supposant que votre API est XML ou JSON, vous pouvez le faire avec quelque chose comme ceci:

class ThingsController < ApplicationController 
    before_filter :authorize 

    def authorize 
     if params[:format] == 'json' || params[:format] == 'xml' 
     require_http_auth_user # http basic auth for API access 
     else 
     require_user # normal authlogic authentication 
     end 
    end 
end 
0

Il peut être utile de séparer en deux contrôleurs séparés et d'inclure la fonctionnalité commune via un mixin. De cette façon, vous pouvez authentifier les contrôleurs séparément.

Questions connexes