![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
W jaki sposób rozwiązujecie wymuszenie logowania w momencie wykonania jakiejś akcji.
Przykładowo "Dodaj komentarz" -> przekierowuje do /login, logowanie przebiega pomyślnie i w jaki sposób powtórzyć wysłanie komentarza. W przypadku GET jest dosyć prosto - po prostu po zalogowaniu robimy redirect na url wyjściowy. Przy POST już tak prosto nie jest. Sesja? Pola hidden? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 578 Pomógł: 69 Dołączył: 15.04.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem nic z Twojego postu.
Jakie odświeżenie strony? Przecież po odświeżeniu tablica POST będzie pusta. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 217 Pomógł: 21 Dołączył: 10.06.2011 Skąd: Głogów Ostrzeżenie: (0%) ![]() ![]() |
Ja bym w hidden załadował 2 pola
action i data Ten post edytował jackraymund 1.09.2013, 12:44:37 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Dobra, widzę, że coraz większy poziom "rozwiązań" się pojawia.
Dla potomnych moje rozwiązanie (CodeIgniter). Sprawdzamy czy nie ma jakiejś zapisanej akcji. Jeżeli jest to przypisujemy do POST czyli symuluje jakby POST był wysłany ponownie. Koniecznie kasujemy żeby potem się gdzieś przypadkiem ponownie nie wywołało. Przy normalnym wysłaniu żądania sprawdzamy czy zalogowany. Jeżeli nie to zapisujemy akcje i robimy normalnie logowanie. Po logowaniu musi tylko wrócić na stronę i wykonuje się powyższy akapit. Dla normalnego wywołania (zalogowanego) nic się nie dzieje nietypowego więc rozwiązanie jest dość transparentne.
Ten post edytował markonix 1.09.2013, 17:09:03 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 578 Pomógł: 69 Dołączył: 15.04.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Raczej nie, bo jak byś sprawdził, to byś wiedział że przeglądarka ZAWSZE pyta czy wyzerować tablicę post czy pozostawić. Cos ci sie pomylilo z z wcisnieciem F5. Bo odswiezanie przez js (co Ty sugerowales) nic juz nie wysyla ponownie
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Sprawdzałeś? Raczej nie, bo jak byś sprawdził, to byś wiedział że przeglądarka ZAWSZE pyta czy wyzerować tablicę post czy pozostawić. Nie trzeba sprawdzać oczywistych rzeczy. Ponad to nie pytałem o rozwiązanie w JS bo takie można faktycznie szybko wyskrobać. Choćby wyświetlić okno logowania, po zalogowaniu zaktualizować sesje, zamknąć okienko i albo poczekać na reakcje użytkownika albo wymusić submit. Pytałem jednak o coś typowo server side. Jak już odgrzebałeś temat to mała poprawka - mój kod działa, ale trzeba uważać w sytuacji gdy ktoś wykona akcje, nie zaloguje się i potem będzie chciał wrócić samodzielnie na stronę wyjściową - wymuszać będzie logowanie (linia 20). Dlatego trzeba jeszcze tam jakiś warunek dodać aby te sprawdzanie zapamiętanych akcji działo się tylko w momencie powrotu z strony autoryzacji (np. parametr GET). |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 578 Pomógł: 69 Dołączył: 15.04.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 578 Pomógł: 69 Dołączył: 15.04.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Pokaż kod. Kod formularza i przycisku refresh? ok... Masz, zawartość pliku a.htm:
Faktycznie, działa w firefox oraz internet explorer, ale już w chromie nie. Mój błąd, miałem tylko te dwie przeglądarki. Nie wiedziałem że potrafi mówić. Czy jeśli o coś zapytasz kolegę na gadu-gadu to go nie zapytałeś, bo nic nie mówiłeś, tylko pisałeś? Ten post edytował timon27 4.09.2013, 23:36:36 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Nie można opierać ważnej funkcjonalności o coś tak różnie działającego.
Poza tym nadal uważam, że wymuszanie na użytkowniku potwierdzania ponownego wysłania POST z nadzieją, że zorientuje się, że chodziło o poprzednią akcje jest totalnie nie trafione. Algorytm jakby to można zrobić JSem już podałem i często widzę takie rozwiązania na stronie i się sprawdzają. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 23:17 |