2012-02-24 14 views
5

Zbudowałem witrynę, która po prawidłowym wypełnieniu formularza jest przekierowywana na stronę z potwierdzeniem, która ma adres URL: mySite.com \ A \ confirmation.zasady gry, jak zrobić oddzielne trasy dla tego samego adresu URL?

Chcę być w stanie przekierować użytkownika na inną stronę Jeśli on wchodzi do niego URL „mysite.com \ potwierdzeniem \” sam

Jaki jest najlepszy sposób osiągnięcia tego celu (miałem nadzieję coś bardziej elegancki następnie utrzymując stan każdego użytkownika)

+0

I jaki masz dobry powód, aby to zrobić? –

+0

Nie chcę, aby ktoś umieszczał link do strony z potwierdzeniem. to ma być jednorazowa, widokowa strona. głównie w celu potwierdzenia interakcji między użytkownikami, chcę być jedynym, który może przekierować użytkownika. – james

+0

Jeśli jest to strona sprawdzania poprawności, oznacza to, że masz już gdzieś zapisane informacje. Po załadowaniu strony po prostu sprawdź, czy dane są obecne. Jeśli nie, przekieruj. –

Odpowiedz

4

Możliwe proste rozwiązania:

  1. Store jakiś klucz w pliku cookie, należy sprawdzić go na stronie potwierdzenia i jasne. wartość Cookie powinny być szyfrowane, więc użytkownik nie będzie w stanie posunąć się go (jeśli nie, można użyć Crypto.encryptAES (String), Crypto.decryptAES (String) ręcznie.
  2. Zmień kontroler potwierdzenie przyjąć parametr, przekazać, że parametr z postaci przedstawienia kontroler: potwierdzenie (secureParameter); parametr Weryfikuj w metodzie potwierdzającym
  3. wolno publikować wniosek do potwierdzenia od kod i zmiany tras i przekierować na GET żąda
  4. Zamiast przekierować do potwierdzenia. w swoim kontrolerze, po prostu wyrenderuj szablon potwierdzający bezpośrednio, w ten sposób nie będzie confi rmation URL.
2

Można umieścić żeton w zakresie zapłonu i przekierować do mySite.com \ potwierdzeniem \

Jeżeli token nie ma przekierować go do innej strony, inaczej wyświetlić stronę i zachować token w zasięg błysku. Jeśli utrzymasz token w zasięgu błysku, użytkownik będzie mógł przeładować stronę bez przekierowania.

2

To nie będzie proste, ponieważ można znaleźć wiele przypadków skrajnych.

Po przekierowaniu Play przesyła 303 HTTP code, a przeglądarka wykonuje nowe żądanie GET pod adresem URL. Możesz spróbować dodać parametr do sprawdzenia, ale wtedy użytkownik może dodać to do paska nawigacji, a żądanie zadziała.

Ponadto naruszyłbyś numer Idempotence in GET. To nie jest dobra rzecz, ponieważ przeglądarki mogą na niej polegać.

Lepiej dodać czek na tej samej stronie i jeśli formularz nie został przesłany, po prostu pokaż wiadomość lub wyślij błąd 404 (nie znaleziono).

Powiązane problemy