2011-11-09 4 views
23

Używam Rails 3.0.9, Ruby 1.9.2, Devise 1.3.4 i potrzebuję nowego widoku sesji Devise, aby uzyskać dostęp do parametrów adresu URL żądania, chociaż widzę to jako ogólne żądanie Railsowe obsługa pytania. Zasadniczo wysyłane jest żądanie do uwierzytelnionego zasobu Devise, który przekierowuje użytkownika do ekranu logowania. W widoku logowania, muszę dostęp do adresu URL żądania, na przykład, jest to url prośba o nazwie na początkuRails 3 get request referrer

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

Na stronie przekierowanie logowania, potrzebuję dostępu do tego adresu URL, ktoś wie jak to zrobić to?

Odpowiedz

42

Możesz użyć request.referer lub request.env['HTTP_REFERER'] w swoim kontrolerze, aby uzyskać adres URL odsyłacza.

+0

Próbowałem, że nie działa, pokazuje adres URL ekranu logowania. Mam na myśli kontroler sesji. Jeśli umieściłbym kod w kontrolerze "articles", nie zostanie wykonany, dopóki logowanie nie zostanie uwierzytelnione. –

+0

Jeśli dobrze rozumiem Twoje wymagania, chcesz przekierować użytkownika na stronę, na której był przed działaniem logowania. Dlaczego po prostu nie zapiszesz adresu URL przekierowania w sesji, gdy użytkownik kliknie login? – topek

+0

Przekierowanie do strony logowania jest już obsługiwane poprawnie, potrzebuję strony logowania, która wymaga uprawnień użytkownika, potrzebuję dostępu do oryginalnego adresu URL żądania, mam nadzieję, że ma to więcej sensu. Powinienem wyjaśnić, że pierwotne połączenie pochodzi z innego serwera, a nie przeglądarki. –

3

Właśnie się dowiedziałem, że WEBrick nieprawidłowo obsługuje request.referrer. Ale nie martw się. Jednorożec radzi sobie z tym dobrze. Nie testowałem tego na innych serwerach. Powinieneś to sprawdzić za pomocą swojego. Nie sądzę, że używasz WEBrick jako serwera produkcyjnego.

+0

Rzeczywiście WEBrick nie jest odpowiedni dla serwer produkcyjny. Zauważyłem także różnice w sposobie, w jaki WEBrick i Puma obsłużyły 'request.referrer' - na pewno warto sprawdzić, czy' request.referrer' nie zachowuje się zgodnie z oczekiwaniami za pomocą WEBrick. – zelanix