Ruby  »  Articoli  »  Rails 

Filtri e autenticazione con Ruby on Rails

di: Luca Bozzo     25 Novembre 2008

Secondo il pattern MVC seguito da Rails, il controller ha il compito di rispondere alle richieste del client utilizzando i modelli per interagire con i dati e le viste per interagire con gli stessi client.

Utilizzando i filtri, Rails permette di definire una catena di metodi da eseguire prima o dopo l'esecuzione delle action di un controller; l'utilizzo dei filtri risulta particolarmente utile quando una stessa porzione di codice deve essere eseguita in action differenti.

I filtri sono dichiarati all'interno di un controller e coinvolgono esclusivamente le action di quel controller; se i filtri interessano le action di controller differenti all'interno della stessa applicazione allora sono definiti nel controller ApplicationController.

Esistono tre tipi di filtri:

  • before_filter - definisce il codice eseguire prima di una action
  • around_filter - definisce il codice da eseguire prima e dopo una action
  • after_filter - definisce il codice eseguire dopo una action

L'ordine di esecuzione nel caso in cui tutti e tre i tipi di filtri siano definiti per una stessa action è la seguente:

  1. before_filter
  2. around_filter
  3. action
  4. around_filter
  5. after_filter

Quando si dichiara un filtro è possibile specificare una catena di metodi da eseguire; ad esempio:

before_filter [:metodo_uno, : metodo_due]

oppure un block contenente direttamente il codice:

before_filter do |controller, action|
 ...
end

Per illustrare il funzionamento dei filtri utilizziamo un'applicazione di esempio. Supponiamo di voler gestire delle note riservate, consultabili solo dopo l'autenticazione con nome utente e password differenti per ogni nota. Una volta introdotte le credenziali per una nota, questa viene visualizzata a schermo e quindi subito cancellata dal database.

L'applicazione deve inoltre consentire ad un amministratore, con nome utente e password propri, di creare nuove note e gestire quelle già esistenti.

Creiamo una nuova applicazione e la risorsa Note con tutte le action necessarie per la sua gestione. Utilizziamo lo script scaffold per generare automaticamente routing, modello, pagine e controller.

rails notes
cd notes
ruby script/generate scaffold Note title:string content:text username:string password:string
rake db:migrate

I campi username e password saranno conservati in chiaro nome utente e password da introdurre per la visualizzazione della singola nota. Dal punto di vista della sicurezza questa non è una buona soluzione, ma ci permette di indagare il funzionamento dei filtri senza introdurre altri concetti di disturbo.

Guide Ruby

Guida ActiveSupport

Una panoramica sulle funzionalità più importanti di ActiveSupport:...

Guida Ruby On Rails 2

Scoprire le novità di Ruby on Rails 2, memorizzare i dati con...

Guida Ruby e il Web

Un percorso alla scoperta delle potenzialità offerte da Ruby nella...

Altre guide

Newsletter @Ruby

Ogni mercoledì, direttamente nella tua e-mail: articoli, guide e tutorial su Ruby e Ruby on Rails .

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Nessun corso previsto

Nessun corso previsto