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:
- l’utente vuole visualizzare gli Articoli, e clicca sul link articoli
- la pagina articoli e’ permessa solo agli utenti registrati, quindi
l’utente viene rediretto alla pagina Login
- 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:
- l’utente vuole visualizzare gli Articoli, e clicca sul link articoli
- la pagina articoli e’ permessa solo agli utenti registrati, quindi
l’utente viene rediretto alla pagina Login
- 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