Application Controller è la classe base di tutte le altre classi.
Se si mette alcun filtro in questa classe, allora il flusso funziona come segue:
Se colpite URL dire di users
risorse con qualsiasi azione dire index
azione poi:
Il controllo viene effettuato prima con Application Controller
. Lì controlla i filtri, se ne trova uno quindi esegue il metodo di filtro e dopo va all'azione index del controller degli utenti.
Application Controller:
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :verify_logged_in
end
altro controller:
class UsersController < ApplicationController
def index
end
Qui nel codice qui sopra si vede che l'altro controller eredita il contenuto del controller di madre che è application controller . Pertanto, se si inserisce before_filter
nel controller dell'applicazione, per ogni utente verrà verificato se l'utente ha effettuato l'accesso per ogni richiesta.
fonte
2013-02-07 14:21:45
E se yo vuole aggiungere un filtro ad eccezione di quello? come eseguiresti il filtro per tutte le azioni su tutti i controller tranne che per l'azione indice del controller degli utenti? @ David Hahn – Cas
Si dovrebbe aggiungere: 'skip_before_filter: verify_logged_in,: except => [: index]' al controller degli utenti. –