J'ai une application Rails 2.3.x qui implémente act_as_authentic dans le modèle User et un modèle UserSession selon l'exemple Authlogic Github. Je suis en train de mettre en place une API pour permettre l'accès à partir de l'iPhone. Utilisera l'authentification HTTP Basic via https (n'implémentera pas de jeton d'accès unique). Chaque appel API nécessite un nom d'utilisateur/mot de passe pour l'accès.Authentification HTTP de base avec Authlogic ou authenticate_or_request_with_http_basic pour l'appel d'API?
Je suis capable d'accéder à l'API en appelant le http://username:[email protected]:3000/books.xml par exemple. Authlogic ne persistera pas si vous utilisez le jeton d'accès unique. Mais j'utilise HTTP Basic que je pense qu'Authlogic créera une session pour les appels API, qui n'est pas utilisée pour mes méthodes API. Donc, pour chaque appel d'API que j'ai fait, un nouvel objet de session est créé. Ainsi, il me semble que cela chargerait la ressource serveur assez rapidement. Cela ressemble à une mauvaise idée.
L'alternative consiste à utiliser les Rails authenticate_or_request_with_http_basic pour les contrôleurs API. Exemple l'ajout d'un before_filter:
def require_http_auth_user
authenticate_or_request_with_http_basic do |username, password|
if @current_user = User.find_by_email(username)
@current_user.valid_password?(password)
else
false
end
end
end
Cela contournera la Authlogic UserSession et il suffit d'utiliser le modèle de l'utilisateur. Mais cela impliquera l'utilisation de codes d'authentification séparés dans l'application.
Quelqu'un a des commentaires et peut partager son expérience? Merci
Merci pour le pointeur. –