2011-09-01 15 views
6

Uso le guide per proteggere l'accesso ai file che devono essere offerti solo ad alcuni utenti di un'app Web. Per fare questo ho un metodo di controllo che accetta informazioni sul file a cui vogliono accedere, controlla la loro autorizzazione, e quindi se sono autorizzati usa x-sendfile per inviarlo a loro. Il concetto funziona bene tranne che per un intoppo: se richiedono una risorsa con a. in esso il mio routing non sa come gestirlo. Nel mio file itinerari ho:instradamento dei binari e parametri con un '.' in loro

match 'atb_resources/:guid/:resource' => 'atb_resources#show', :as => :get_atb_resource, :via => :get 

e ma poi se provo questo nella mia spec:

get 'show', :guid => 'some_guid', :resource => 'blah.txt' 

le specifiche non riesce con un:

Failure/Error: get 'show', :guid => @atb.guid, :resource => 'blah.txt' 
ActionController::RoutingError: 
    No route matches {:guid=>"ABCDEFG5", :resource=>"blah.txt", :controller=>"atb_resources", :action=>"show"} 

ma questo va bene:

get 'show', :guid => 'some_guid', :resource => 'blahDOTtxt' 

Sto assumendo che il problema sia con il mio percorso, ma non capisco davvero come i periodi influenzano i percorsi. Qualche idea?

risposta

8

Per Rails 3 si potrebbe aggiungere questo al tuo percorso:

:constraints => { :resource => /.*/ } 

per Rails 2 (per quanto ne so):

:requirements => { :resource => /.*/ } 

Rails cercheranno di interpretare il .txt come di formato senza uno dei quelli.

+0

Esattamente quello di cui avevo bisogno, grazie! – Matthew

Problemi correlati