Перевіряємо веб-додатки
Чудово!
Ви створили веб-додаток.
Погляньмо, як воно працює.
Варіанти роботи:
●один із учнів запускає свій код;
●викладач запускає еталонний код.
Обговорення: розбір створеної програми
Перевірити веб-додаток
Чи запитують по черзі?
Обговорення: розбір створеної програми
Перевірити веб-додаток
Чи запитують по черзі?
Обговорення: розбір створеної програми
Так, все працює!
Перевіряємо веб-прокладання
Що буде, якщо до сервера підключиться інший клієнт?
Можна підключитися кількома клієнтами з одного
комп'ютера, використовуючи кілька браузерів (або той
самий браузер у звичайному режимі та в режимі інкогніто.
У Chrome нове «вікно-інкогніто» відкривається поєднанням
<ctrl> + <shift> + 'n').
Обговорення: розбір створеної програми
Демонстрація
Спробуйте відкрити сторінку у різних браузерах.
і подивитися, як поводитиметься програма.
Обговорення: розбір створеної програми
Підключення різних клієнтів
Черговість показу питань порушується. Чому?
Обговорення: розбір створеної програми
Проблема
Глобальні змінні змінюються всім клієнтам відразу!
Обговорення: розбір створеної програми
Розглянемо проблему на прикладі
Хороший спосіб упоратися з проблемою—
ізолювати її від решти програми, після чого постаратися
вирішити на простому прикладі.
Розглянемо максимально просту програму Лічильник та
знайдемо рішення.
Нова тема: сесії
Розглянемо проблему на прикладі
Завдання програми «Лічильник» — підраховувати кількість
звернень до сторінки.
Нова тема: сесії
global counter
обнуляємо змінну при відкритті головної сторінки:
counter = 0
збільшуємо змінну при зверненні
до сторінки:
counter = counter + 1
?
Підключення різних клієнтів
Упевнімося, що в цьому простому прикладі проблема
зберігається. Запустимо кілька клієнтів.
Нова тема: сесії
Підключення різних клієнтів
Що ми побачили?
Нова тема: сесії
Так, користувачі заважають одне одному
працювати.
Підключення різних клієнтів
Що ми побачили?
Нова тема: сесії
Так, користувачі заважають одне одному
працювати.
Рішення
Нам допоможе механізм сесій.
Розберемося та використовуємо сесії для виправлення
програми «Лічильник».
Вікторину виправте самостійно!
Нова тема: сесії
Сесія
У фреймворку Flask є об'єкт session.
Об'єкт session зберігає дані про активність кожного окремого
користувача у вигляді пар "ключ-значення".
При зверненні до об'єкта session Flask щоразу знаходить той
набір даних, який відповідає клієнту, який звернувся до веб-
додатку.
Нова тема: сесії
Сесія –– сеанс зв'язку клієнта та сервера.
Сесія
В об'єкті session кожного клієнта використовується його
власний набір даних.
Нова тема: сесії
Flask
об'єкт session
Клієнти Дані
Синтаксис
# Імпортуємо об'єкт session у програму:
from flask import session
# Замість змінної створимо пару ключ-значення:
session['counter'] = 0
# При зверненні до сторінки збільшимо значення
# по ключу counter:
session['counter'] += 1
Нова тема: сесії
Сесії
Запустіть програму.
При запуску виникає помилка:
Нова тема: сесії
Сесії
Що відбувається?
Інформація про ідентифікатор користувача
та дані, що зберігаються у сесії— це приватна інформація.
Flask забороняє передавати цю інформацію у відкритому
вигляді. Він наполягає, що треба зашифрувати цю
інформацію за допомогою секретного ключа.
Нова тема: сесії
Синтаксис
# Створюємо об'єкт веб-програми:
app = Flask(__name__)
# у app.config зберігаються налаштування, загальні
всім користувачів. Створюємо секретний ключ:
app.config['SECRET_KEY'] = 'VeryStrongKey'
Нова тема: сесії
Прописуємо секретний ключ для програми :
Демонстрація
Нова тема: сесії
Перевіряємо виправлений варіант «лічильника».
Результат
Нова тема: сесії
Тепер все працює: один клієнт не заважає іншому.
Звернімо увагу : сервер вважає різними клієнтами
підключення із різних браузерів. При роботі з різних
вкладок одного браузера програма сприймає нас як
одного клієнта.
Файли Cookie
Файли cookie — це специфічні дані (кілька рядків тексту), які сервер
надсилає браузеру. Вони зберігаються на комп'ютері користувача.
Браузер прикріплює цей набір даних для всіх наступних запитів до
цього сервера. Так сервер може розпізнати, що різні запити
надходять від одного клієнта.
Нова тема: Cookie
cookie
запити
Cookie & Flask
Flask використовує cookies, щоб знайти серед усіх сесій ту, яка
відповідає клієнту, що прийшов із запитом. Тому йому 1 клієнт = 1
браузер. У режимі інкогніто браузер ігнорує раніше надіслані йому
cookies.
Flask
об'єкт session
Клієнти Дані
cookie
cookie
cookie
Нова тема: Cookie
Cookie у браузері
Подивимося, де лежать файли cookies у браузері Google
Chrome.
1.Налаштування… →
2.Конфіденційність та безпека… →
3.Файли cookie та інші дані сайтів… →
4.Усі файли cookie та дані сайту.
Нова тема: Cookie