# Acts as authenticated

**URL:** <https://www.ruby-forum.com/t/acts-as-authenticated/80381>\
**Category:** IT\
**Created:** [December 25, 2006, 1:35pm UTC](https://www.ruby-forum.com/t/acts-as-authenticated/80381 "2006-12-25T13:35:40Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![stb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e68b1a/32.png) [@stb](https://www.ruby-forum.com/u/stb)\
**Post date:** [December 25, 2006, 1:35pm UTC](https://www.ruby-forum.com/t/acts-as-authenticated/80381/1 "2006-12-25T13:35:40Z")

</div>

Ciao,

premetto che non ho ancora visto in maniera approfondita il  
funzionamento del plugin, tttavia ho implementato il login e il  
logout, entrambi funzionanti senza problemi.

La questione è banale, ho un controller di nome actions che mi  
contiene tute le “azioni” che un utente registrato può fare e  
ovviamente non ho voglia di implementare per ciascun metodo un if per  
controllare il login.  
Per farla breve vorrei che se l’ utente non è loggato, qualsiasi  
azione di quel controller mi restituisce un’ alert informando l’  
utente e blocando ogni altra azione.

Come mi conviene fare?

Saluti Andrea\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_  
Ml mailing list  
removed\_email\_address@domain.invalid  
[http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

---

<div class="post-metadata">

**Author:** ![stb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e68b1a/32.png) [@stb](https://www.ruby-forum.com/u/stb)\
**Post date:** [December 25, 2006, 5:29pm UTC](https://www.ruby-forum.com/t/acts-as-authenticated/80381/2 "2006-12-25T17:29:54Z")

</div>

On 12/25/06, stb [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> controllare il login.  
> Per farla breve vorrei che se l’ utente non è loggato, qualsiasi  
> azione di quel controller mi restituisce un’ alert informando l’  
> utente e blocando ogni altra azione.
> 
> Come mi conviene fare?

Inserisci nel tuo controller before\_filter :login\_required dove  
login\_required è un metodo privato che verifica se l’utente è loggato, e  
gestisce la situazione se non lo  
è:  
before\_filter :login\_required

```
private
  def login_required
    # ...
  end

```

–

> **[Antonio Cangiano](https://antoniocangiano.com)**
>
> This is the homepage of Antonio Cangiano, a Software Development Manager at IBM, published author, web entrepreneur, and certified nutritionist.

Zen and the Art of Ruby P.ming  
[http://effettofarfalla.com](http://effettofarfalla.com)  
Il battito d’ali di un italiano a Toronto

---

<div class="post-metadata">

**Author:** ![stb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e68b1a/32.png) [@stb](https://www.ruby-forum.com/u/stb)\
**Post date:** [December 26, 2006, 6:13pm UTC](https://www.ruby-forum.com/t/acts-as-authenticated/80381/3 "2006-12-26T18:13:55Z")

</div>

mmm capito, ma in login required come faccio a bloccare o lasciar  
eseguire le azioni?  
Cioè dentro il metodo avrò una cosa del tipo IF logged?(ora nn  
ricorda cosa usa) e se ok mi fa l’azione chiamaa altrimenti mi rida  
un’ alert

Il giorno 25/dic/06, alle ore 17:29, Antonio C. ha scritto:

---

<div class="post-metadata">

**Author:** ![stb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e68b1a/32.png) [@stb](https://www.ruby-forum.com/u/stb)\
**Post date:** [December 27, 2006, 1:06am UTC](https://www.ruby-forum.com/t/acts-as-authenticated/80381/4 "2006-12-27T01:06:57Z")

</div>

ah ecco quindi dipende dal valore di ritorno, bene allora penso di  
aver risolto il problema, grazie mille

Saluti Andrea

Il giorno 26/dic/06, alle ore 21:50, Antonio C. ha scritto:

---

<div class="post-metadata">

**Author:** ![stb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e68b1a/32.png) [@stb](https://www.ruby-forum.com/u/stb)\
**Post date:** [December 26, 2006, 9:50pm UTC](https://www.ruby-forum.com/t/acts-as-authenticated/80381/5 "2006-12-26T21:50:38Z")

</div>

On 12/26/06, stb [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> mmm capito, ma in login required come faccio a bloccare o lasciar  
> eseguire le azioni?  
> Cioè dentro il metodo avrò una cosa del tipo IF logged?(ora nn  
> ricorda cosa usa) e se ok mi fa l’azione chiamaa altrimenti mi rida  
> un’ alert

login\_required viene invocato prima che una qualsiasi azione nel tuo  
controller venga eseguita. Se il valore restituito da questo metodo  
è false,  
l’azione non viene eseguita, mentre se il valore è true, allora l’utente è  
“loggato” e si passa direttamente all’esecuzione dell’azione nel  
controller.  
Per cui il tuo login\_required può somigliare a qualcosa del tipo:

def login\_required  
if current\_user  
return true  
end  
flash[:warning]=‘Effettua il login’  
session[:return\_to]=request.request\_uri  
redirect\_to :controller =\> “utente”, :action =\> “login”  
return false  
end

Assumendo che tieni traccia dell’utente nella variabile current\_user, se  
questo esiste allora l’utente è già autenticato e possiamo restituire true  
per passare direttamente all’azione invocata. Se questo non è il caso,  
inviamo un messaggio di avviso, reindirizziamo l’utente verso l’azione  
di  
login e restituiamo false perché l’utente non è loggato.  
Ilsession[:return\_to]=  
request.request\_uri ti permette di tenere traccia dell’azione a cui  
l’utente  
voleva accedere prima di dover effettuare il login, in questo modo nel  
metodo che effettua il login, una volta loggato, potrai reindirizzare  
l’utente all’azione richiesta. Questo è il meccanismo generale, ovviamente  
adatta il codice ai nomi scelti da te e alle tue esigenze.

## Ciao, Antonio

> **[Antonio Cangiano](https://antoniocangiano.com)**
>
> This is the homepage of Antonio Cangiano, a Software Development Manager at IBM, published author, web entrepreneur, and certified nutritionist.

Zen and the Art of Ruby P.ming  
[http://effettofarfalla.com](http://effettofarfalla.com)  
Il battito d’ali di un italiano a Toronto

---

<div class="post-metadata">

**Author:** ![stb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e68b1a/32.png) [@stb](https://www.ruby-forum.com/u/stb)\
**Post date:** [December 28, 2006, 3:52am UTC](https://www.ruby-forum.com/t/acts-as-authenticated/80381/6 "2006-12-28T03:52:43Z")

</div>

On 12/27/06, Paolo M. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Io normalmente nel filtro implemento anche un controllo sulle URL.  
> Poiché di solito ci sono un po’ di view a cui si vuol fare accedere  
> anche chi non è autenticato, prima ho una whitelist di URL a cui tutti  
> possono andare e poi ho il controllo sull’essere loggati o no che in  
> sostanza funziona come ha descritto Antonio.
> 
> Mi viene in mente ora una cosa: non è che si possono per caso realizzare  
> questi filtri con il routing?

Ciao Paolo,

se ho capito bene quello che vuoi fare, non hai bisogno di implementare  
nulla.

Puoi indicare quali sono le azioni che vuoi includere:

before\_filter :login\_required, :only =\> [:edit, :delete]

oppure alternativamente, le azioni che vuoi escludere:

before\_filter :login\_required, :except =\> [:list, :index, :show]

## Ciao, Antonio

> **[Antonio Cangiano](https://antoniocangiano.com)**
>
> This is the homepage of Antonio Cangiano, a Software Development Manager at IBM, published author, web entrepreneur, and certified nutritionist.

Zen and the Art of Ruby P.ming  
[http://effettofarfalla.com](http://effettofarfalla.com)  
Il battito d’ali di un italiano a Toronto

---

<div class="post-metadata">

**Author:** ![stb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e68b1a/32.png) [@stb](https://www.ruby-forum.com/u/stb)\
**Post date:** [December 28, 2006, 12:46am UTC](https://www.ruby-forum.com/t/acts-as-authenticated/80381/7 "2006-12-28T00:46:52Z")

</div>

Io normalmente nel filtro implemento anche un controllo sulle URL.  
PoichÃ© di solito ci sono un po’ di view a cui si vuol fare accedere  
anche chi non Ã¨ autenticato, prima ho una whitelist di URL a cui tutti  
possono andare e poi ho il controllo sull’essere loggati o no che in  
sostanza funziona come ha descritto Antonio.

Mi viene in mente ora una cosa: non Ã¨ che si possono per caso realizzare  
questi filtri con il routing?

Paolo

---

<div class="post-metadata">

**Author:** ![stb](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/e68b1a/32.png) [@stb](https://www.ruby-forum.com/u/stb)\
**Post date:** [December 28, 2006, 7:53pm UTC](https://www.ruby-forum.com/t/acts-as-authenticated/80381/8 "2006-12-28T19:53:23Z")

</div>

ho qualche problema con login\_required

prima di tutto login\_required ce l’ho già definita dal plugin,  
inoltre ha dei comportamenti strani.  
per qualsiasi azione(escluso il metodo “t”) presente nel mio  
controler, se non sono loggato non mi fa niente. Invece per il metodo  
di test “t”(quello in fondo) mi reindirizza alla pagina di login.  
Ho provato anche a ridefinire login\_reuired nel mio controller  
sperando che andasse in override ma senza successo.  
Cosa sto sbagliando?

questo è il mio controller actions  
[http://pastie.caboo.se/29932](http://pastie.caboo.se/29932)

Saluti Andrea

Il giorno 28/dic/06, alle ore 03:51, Antonio C. ha scritto:
