Pagina dopo il login

Ciao a tutti,

da qualche giorno mi chiedo quale sia il modo migliore per risolvere il
problema della “pagina dopo il login”. Mi spiego meglio.

Nell’applicazione su cui sto lavorando diverse pagine richiegono
l’autenticazione, quindi se l’utente prova ad accedere direttamente a
tali pagine, verra’ rediretto alla pagina di login.
Fin qui e’ facile.

Dopo aver fatto l’autenticazione, l’utente dovrebbe essere rediretto
alla pagina in cui voleva andare.

Ecco un esempio:

  1. l’utente vuole visualizzare gli Articoli, e clicca sul link articoli
  2. la pagina articoli e’ permessa solo agli utenti registrati, quindi
    l’utente viene rediretto alla pagina Login
  3. dopo la corretta operazione di login, l’utente verra rediretto alla
    pagina desiderata, cioe’ Articoli

Qual’e’ la soluzione piu’ elegante per risolvere questo dilemma ?

Grazie
Alessandro

Ale Ds wrote:

Ciao a tutti,

da qualche giorno mi chiedo quale sia il modo migliore per risolvere il
problema della “pagina dopo il login”. Mi spiego meglio.

Nell’applicazione su cui sto lavorando diverse pagine richiegono
l’autenticazione, quindi se l’utente prova ad accedere direttamente a
tali pagine, verra’ rediretto alla pagina di login.
Fin qui e’ facile.

Dopo aver fatto l’autenticazione, l’utente dovrebbe essere rediretto
alla pagina in cui voleva andare.

Ecco un esempio:

  1. l’utente vuole visualizzare gli Articoli, e clicca sul link articoli
  2. la pagina articoli e’ permessa solo agli utenti registrati, quindi
    l’utente viene rediretto alla pagina Login
  3. dopo la corretta operazione di login, l’utente verra rediretto alla
    pagina desiderata, cioe’ Articoli

Qual’e’ la soluzione piu’ elegante per risolvere questo dilemma ?

Grazie
Alessandro

solitamente si salva in una variabile di sessione la pagina richiesta
prima del filtro, a login effettuato usi poi redirect_to per mandare
l’utente dove aveva chiesto

Alessandro S. wrote:

solitamente si salva in una variabile di sessione la pagina richiesta
prima del filtro, a login effettuato usi poi redirect_to per mandare
l’utente dove aveva chiesto

In effetti questo è il meccanismo usato da AuthenticatedSystem, classe
che accompagna i più comuni framework di autenticazione per Rails (ad
esempio restful_authentication)

Il codice da mettere nel controller è

a inizio procedura di login

store_location

poi fai i tuoi controlli

a login completata

redirect_back_or_default(:controller => ‘/people’, :action => ‘index’)

e la definizione dei metodi è:

def store_location
session[:return_to] = request.request_uri
end

def redirect_back_or_default(default)
session[:return_to] ? redirect_to(session[:return_to]) :
redirect_to(default)
session[:return_to] = nil
end

In ogni caso conviene usare un framework (gemma, plugin o lib) piuttosto
che scriversi il proprio gestore di login.

Paolo

Paolo M. wrote:

Alessandro S. wrote:

solitamente si salva in una variabile di sessione la pagina richiesta
prima del filtro, a login effettuato usi poi redirect_to per mandare
l’utente dove aveva chiesto

In effetti questo è il meccanismo usato da AuthenticatedSystem, classe
che accompagna i più comuni framework di autenticazione per Rails (ad
esempio restful_authentication)

Il codice da mettere nel controller è

a inizio procedura di login

store_location

poi fai i tuoi controlli

a login completata

redirect_back_or_default(:controller => ‘/people’, :action => ‘index’)

e la definizione dei metodi è:

def store_location
session[:return_to] = request.request_uri
end

def redirect_back_or_default(default)
session[:return_to] ? redirect_to(session[:return_to]) :
redirect_to(default)
session[:return_to] = nil
end

In ogni caso conviene usare un framework (gemma, plugin o lib) piuttosto
che scriversi il proprio gestore di login.

Paolo

Come gestore login gia’ uso Authlogic,
per stabilire la pagina dopo il login aggiungero’ una voce “return_to”
nell’hash session, come mi avette consigliato.

grazie 1000,
Alessandro