Middle
Veb tətbiqlərdə sessiyanın işləmə mexanizmi nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Sessiya mexanizmi istifadəçinin vəziyyətini HTTP sorğuları arasında saxlamağa əsaslanır, çünki bu sorğular öz təbiətinə görə statelessdir. Bu, unikal sessiya identifikatorunun istifadəsi ilə həyata keçirilir.
Əsas addımlar:
- İstifadəçinin ilk sorğusu: İstifadəçi veb serverə sorğu göndərir.
- Sessiya yaradılması: Əgər sorğu tanınmayan istifadəçidən (sessiya identifikatoru olmayan) gəlirsə, server öz tərəfində (yaddaşda, verilənlər bazasında, fayl sistemində) yeni sessiya yaradır və unikal sessiya identifikatoru生成 edir.
- İdentifikatorun müştəriyə göndərilməsi: Server bu sessiya identifikatorunu cookie (
Set-Cookie: SESSIONID=xyz; path=/) şəklində göndərir. - Müştəridə saxlanması: Brauzer bu cookie-ni saxlayır və bütün növbəti sorğularla eyni domenə (
Cookie: SESSIONID=xyz) göndərir. - Serverdə tanıma: Hər bir növbəti sorğuda, sessiya identifikatorunu ehtiva edən cookie alındıqda, server bu identifikatoru istifadə edərək müvafiq sessiyanı tapır və saxlanmış istifadəçi məlumatlarını əldə edir.
- Sessiyanın sonlandırılması: Sessiya, inaktivlik, istifadəçinin çıxışı və ya brauzerin bağlanması ilə sona çatdırıla bilər (əgər cookie-nin müddəti bitməyibsə).
İstifadəçi məlumatlarının saxlanması nümunəsi:
// Java Servlets nümunəsi
HttpSession session = request.getSession(); // Sessiyanı əldə et və ya yarat
// İstifadəçinin daxil olub-olmadığını yoxla
if (session.getAttribute("loggedInUser") == null) {
// İstifadəçi daxil olmayıb, giriş səhifəsinə yönləndir
response.sendRedirect("/login");
} else {
// İstifadəçi daxil olub, məlumatları əldə et
User user = (User) session.getAttribute("loggedInUser");
// ... istifadəçi məlumatları ilə işləmə
}
Sessiyaların saxlanması:
- Serverin yaddaşında (kiçik tətbiqlər üçün uyğundur).
- Serverin fayl sistemində.
- Verilənlər bazasında (klassik və miqyaslana bilən variant).
- Paylanmış cache-lərdə (Redis, Memcached) çoxsaylı serverlər üçün miqyaslandırma.
Təhlükəsizlik:
- "secure" və "HttpOnly" bayraqlarından istifadə.
- Uğurlu autentifikasiya sonrası sessiya ID-sinin yenidən yaradılması.
- Sessiya üçün uyğun vaxt limiti təyin edilməsi.
- Sessiya oğurluğuna qarşı qoruma (Session Hijacking).