Збереження стану сеансу на стороні клієнта (шаблон проєктування)
Збереження стану сеансу на стороні клієнта (англ. Client Session State) — шаблон проєктування, який пропонує зберігати стан сеансу на стороні клієнта.
При реалізації клієнт-серверної архітектури необхідно реалізувати передачу даних між обома сторонами. При цьому варто зберігати інформацію про сеанс.
Даний шаблон пропонує зберігати стан сеансу на стороні клієнта.
- Висока швидкодія. Перевірка та створення сеансів відбувається швидко, дані отримуються із HTTP-запиту, не потрібно перевіряти сховище
- Зменшення навантаження із сервера. Кожний клієнт містить свій власний стан
- Не потрібно копіювати стан між різними вебсерверами
- Можна легко додати новий вебсервер, оскільки він не містить стану, а отримує його ззовні
- Низька надійність, необхідне шифрування
- Викликає навантаження, якщо клієнт тонкий
- Сеанс не можна змінити на вимогу. Куки можна видалити з браузера, але він все одно буде працювати, доки термін дії не закінчиться
- Розмір HTTP-запиту збільшується залежно від розміру сеансу
Розглянемо декілька способів передачі сеансу зі сторони клієнта.
Один із таких - це використання уніфікованого локатора ресурсів. Наприклад, нехай у нас є мережа організацій, тоді доступ до різних організацій можна регулювати залежно від параметрів:
https://localhost:1000/<organization-identifier>/catalog
Інший варіант - це використання прихованих полів. Цей варіант може бути корисний, коли необхідно передати дані, та запобігти можливості їх редагування клієнтом.
<input type="hidden" id="id" value="19">
Також можна використати веб сховище або ж куки. Так, наприклад, при реалізації опитувальника необхідно, щоб користувач не втратив заповнені дані. Тоді при заповнені кожного поля можна сереалізовувати значення та запам'ятовувати їх у сховищі, а при повторному відкриті сторінки відновлювати стан.
document.cookie = $("#survey-form").serializeArray()
Щоб не зберігати інформацію про користувача на кожному сервісі її можна кодувати та передавати разом із запитом. Ось такий вигляд матиме JWT токен.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
- Клієнт-серверна архітектура
- Вебсервер
- HTTP
- Уніфікований локатор ресурсів
- Web Storage
- Куки
- JSON Web Token
- Client Session State [Архівовано 27 жовтня 2020 у Wayback Machine.]
- Patterns of Enterprise Application Architecture [Архівовано 28 березня 2014 у Wayback Machine.]