Middle
Aký je mechanizmus práce relácie vo webových aplikáciách?
sobes.tech AI
Odpoveď od AI
Mechanizmus práce relácie je založený na uchovávaní stavu používateľa medzi HTTP požiadavkami, ktoré sú svojou podstatou bezstavové. Toho sa dosahuje pomocou jedinečného identifikátora relácie.
Hlavné kroky:
- Prvá požiadavka používateľa: Používateľ odošle požiadavku na webový server.
- Vytvorenie relácie: Ak je požiadavka od neznámeho používateľa (nemá identifikátor relácie), server vytvorí novú reláciu na svojej strane (v pamäti, databáze, súborovom systéme) a vygeneruje jedinečný identifikátor relácie.
- Odoslanie identifikátora klientovi: Server odošle tento identifikátor relácie klientovi vo forme cookie (
Set-Cookie: SESSIONID=xyz; path=/). - Uloženie na klientovi: Prehliadač uloží túto cookie a odošle ju so všetkými nasledujúcimi požiadavkami na ten istý domén (
Cookie: SESSIONID=xyz). - Identifikácia na serveri: Pri prijatí každej nasledujúcej požiadavky s cookie obsahujúcou identifikátor relácie, server použije tento identifikátor na vyhľadanie príslušnej relácie a získanie uložených údajov používateľa.
- Ukončenie relácie: Relácia môže skončiť po časovom limite neaktivity, pri jasnom odhlásení používateľa (logout), alebo pri zatvorení prehliadača (ak cookie relácie nemá dobu platnosti).
Príklad použitia relácie na uloženie autentifikačných informácií:
// Príklad na Java Servlets
HttpSession session = request.getSession(); // Získanie alebo vytvorenie relácie
// Kontrola, či je používateľ prihlásený
if (session.getAttribute("loggedInUser") == null) {
// Používateľ nie je prihlásený, presmerovanie na prihlasovaciu stránku
response.sendRedirect("/login");
} else {
// Používateľ je prihlásený, získanie údajov
User user = (User) session.getAttribute("loggedInUser");
// ... práca s údajmi používateľa
}
Ukladiská relácií:
- V pamäti servera (vhodné pre malé aplikácie).
- V súborovom systéme servera.
- V databáze (klasická možnosť, škálovateľná).
- V distribuovaných cache (Redis, Memcached) pre škálovanie na viacerých serveroch.
Bezpečnosť:
- Použitie "secure" a "HttpOnly" príznakov pre cookie relácie.
- Regenerácia ID relácie po úspešnej autentifikácii.
- Nastavenie primeraného časového limitu relácie.
- Ochrana pred Session Hijacking (zachytenie identifikátora relácie).