Czy używanie sesji w RESTful API naprawdę narusza RESTfulness? Widziałem wiele opinii zmierzających w obu kierunkach, ale nie jestem przekonany, że sesje są bez RESTless . Z mojego punktu widzenia:
- Uwierzytelnianie nie jest zabronione dla RESTfulness (w przeciwnym razie użycie usług RESTful byłoby niewielkie)
- uwierzytelnianie odbywa się poprzez wysłanie tokena uwierzytelniającego w żądaniu, zwykle w nagłówku
- ten token uwierzytelniający musi zostać w jakiś sposób uzyskany i może zostać odwołany, w takim przypadku należy go odnowić
- token uwierzytelniający musi zostać zweryfikowany przez serwer (w przeciwnym razie nie byłby to uwierzytelnienie)
Jak więc sesje to naruszają?
- sesje po stronie klienta są realizowane przy użyciu plików cookie
- pliki cookie to po prostu dodatkowy nagłówek HTTP
- sesyjny plik cookie można uzyskać i odwołać w dowolnym momencie
- W razie potrzeby sesyjne pliki cookie mogą mieć nieskończony czas życia
- identyfikator sesji (token uwierzytelnienia) jest sprawdzany po stronie serwera
W związku z tym dla klienta plik cookie sesji jest dokładnie taki sam, jak każdy inny mechanizm uwierzytelniania oparty na nagłówku HTTP, z tym wyjątkiem, że używa Cookie
nagłówka zamiast Authorization
lub innego zastrzeżonego nagłówka. Jeśli po stronie serwera nie była dołączona żadna sesja, dlaczego miałoby to mieć znaczenie? Implementacja po stronie serwera nie musi dotyczyć klienta, o ile serwer działa w trybie RESTful. Jako takie same pliki cookie nie powinny tworzyć interfejsu API RESTless , a sesje są po prostu plikami cookie dla klienta.
Czy moje założenia są błędne? Co powoduje, że sesyjne pliki cookie RESTless ?