Nota prawna: Jestem nowy w szkole myśli o REST i staram się owijać wokół niej myśli.Czy możesz mi pomóc to zrozumieć? "Częste błędy REST: sesje są nieistotne"
Tak, czytam tę stronę, Common REST Mistakes, i odkryłem, że jestem całkowicie zaskoczony, że sekcja poświęcona sesjom jest nieistotna. Oto, co mówi strona:
Klient " " nie musi już logować się ani "uruchamiać połączenia". Uwierzytelnianie HTTP jest wykonywane automatycznie przy każdej wiadomości w postaci . Aplikacje klienta są konsumentami zasobów , a nie usług. Dlatego nie ma nic do zalogowania się! Powiedzmy, że rezerwujesz lot w usłudze internetowej REST . Nie tworzysz nowego połączenia "sesyjnego" z usługą . Zamiast tego poprosić o "obiekt twórcy ", aby utworzyć nowy plan podróży . Możesz rozpocząć wypełnianie pustych pól, ale potem uzyskać zupełnie inny inny komponent w innym miejscu na stronie internetowej , aby wypełnić inne puste pola. Nie ma sesji, więc nie ma problemu z migracją stanu między klientami. Nie ma także numeru "powinowactwa sesji" na serwerze (chociaż nadal trzeba się liczyć z problemami dotyczącymi równoważenia, aby kontynuować).
OK, dostaję, że uwierzytelnianie HTTP odbywa się automatycznie przy każdej wiadomości - ale jak? Czy nazwa użytkownika/hasło są wysyłane przy każdym żądaniu? Czy to nie tylko zwiększa powierzchnię ataku? Czuję, że brakuje mi części układanki.
Czy byłoby źle mieć usługę REST, powiedzmy, /session
, która akceptuje żądanie GET, gdzie można podać nazwę użytkownika/hasło jako część żądania, i zwraca token sesji, jeśli uwierzytelnienie się powiodło , które mogą być następnie przekazywane wraz z kolejnymi wnioskami? Czy to ma sens z punktu widzenia REST, czy jest to, że brakuje punktu?
Ta odpowiedź nie ma dla mnie żadnego sensu. Po pierwsze, mówi, że wystarczy podać login i hasło za każdym razem, a więc i raz, co ma sens. Następnie sugerowany jest pomysł powrócenia do klienta pomyślnego stanu logowania w postaci tokena. W razie potrzeby token może kodować czas utworzenia. Z pewnością możemy zwrócić informacje do klienta. Tak więc ta sugestia wydaje mi się w porządku. Odpowiedź brzmi, że nie jest w porządku, ponieważ "niesie ze sobą stan", ale czy nie jest to "ST" w "REST", że stan można przenieść między klientem a serwerem? –