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