2010-12-14 9 views
1

Je dois faire quelque chose de stupide. Des idées sur pourquoi cela ne fonctionnerait pas. Je me invité à vous authentifier lors d'une demande au contrôleur de la configuration ci-dessous:before_filter: sauf ne semble pas fonctionner

class ApplicationController < ActionController::Base 

before_filter :auth, :except => [:aboutus] 

La méthode auth est juste cela. Il fonctionne très bien, mais applique à tous les contrôleurs dont aboutus

#Simple HTTP Auth during development 
    def auth 
    authenticate_or_request_with_http_basic do |username, password| 
     username == "REDACTED" && password == "REDACTED" 
    end 
    end 

Merci

+0

Est-ce que 'aboutus' est un contrôleur ou une action? – Zabba

+0

Désolé, j'aurais dû préciser que aboutus était un autre contrôleur et non une action dans le contrôleur d'application. Roadmaster a repéré ce que j'étais confondu. – Nick

Répondre

3

Cette configuration s'appliquerait à l'action "aboutus" de ApplicationController. Avez-vous essayé de placer la définition de before_filter dans le contrôleur qui a réellement la méthode/l'action "aboutus"?

Vous pouvez mettre cela en ApplicationController:

before_filter :auth 

puis, dans le contrôleur contenant la méthode aboutus:

skip_before_filter :auth, :only => :aboutus 

cette façon vous ne répétez pas le code et tout semble bien.

+0

Fonctionne comme un charme. J'ai oublié qu'un contrôleur pouvait forcer les filtres en amont à être ignorés. Vraiment apprécier le combo de souligner ce qui n'allait pas et d'offrir une solution aussi. Merci – Nick

Questions connexes