2011-11-09 17 views
23

Sto usando Rails 3.0.9, Ruby 1.9.2, Devise 1.3.4 e ha bisogno nella sessione Devise nuova vista per accedere ai parametri url della richiesta anche se la vedo come una richiesta generale di Rails gestire la domanda. In sostanza, viene richiesta una risorsa autenticata Devise che reindirizza l'utente alla schermata di accesso. Nella vista di login, ho bisogno di accesso all'URL richiesta, ad esempio, questa è la richiesta URL chiamato in principioRails 3 get request referrer

http://mysite.com/article/5?type=blah 

Nella pagina di reindirizzamento di login, ho bisogno di accesso a tale URL, qualcuno sa come posso fare Questo?

risposta

42

È possibile utilizzare request.referer o request.env['HTTP_REFERER'] nel controller per ottenere l'URL di riferimento.

+0

Provato che, non ha funzionato, mostra l'url della schermata di accesso. Con ciò, intendevo nel controller delle sessioni. Se inserisco il codice nel controller 'articles', non verrà eseguito fino a quando il login non sarà autenticato. –

+0

Se ho capito bene le tue esigenze, vuoi reindirizzare l'utente alla pagina, dove si trovava prima dell'azione di accesso. Perché non si salva semplicemente l'url di reindirizzamento nella sessione, quando l'utente fa clic sul login? – topek

+0

Il reindirizzamento alla pagina di accesso è già gestito correttamente, quello che mi serve è nella pagina di accesso che richiede i credenziali dell'utente, ho bisogno di accedere all'URL della richiesta originale, spero che abbia più senso. Dovrei chiarire che la chiamata originale proviene da un altro server, non da un browser. –

3

Ho appena scoperto che WEBrick gestisce request.referrer in modo errato. Ma non preoccuparti. L'unicorno lo gestisce bene. Non l'ho provato su altri server. Dovresti controllare questo con il tuo. Non penso che tu usi WEBrick come server di produzione.

+0

Infatti WEBrick non è appropriato per un server di produzione. Ho anche trovato differenze nel modo in cui WEBrick e Puma hanno gestito 'request.referrer' - vale la pena controllare se' request.referrer' non si comporta come previsto con WEBrick. – zelanix