Sobes.tech
Middle

Ի՞նչ է սեսիայի աշխատանքի մեխանիզմը վեբ հավելվածներում։

sobes.tech AI

Պատասխան AI-ից

Մеханիզմը աշխատանքի սեսիայի հիմնված է օգտագործողի վիճակի պահպանումը HTTP-հայցերի միջև, որոնք ըստ էության stateless են: Դա հասնում է յուրահատուկ սեսիայի նույնականացնողի օգտագործմամբ:

Հիմնական քայլերը:

  1. Օգտագործողի առաջին հարցումը: Օգտագործողը ուղարկում է հարցում վեբ սերվերին:
  2. Սեսիայի ստեղծում: Եթե հարցումը անծանոթ օգտվողից է (նա չունի սեսիայի նույնականացնող), սերվերը ստեղծում է նոր սեսիա իր կողմում (հիշողության, տվյալների բազայի, ֆայլային համակարգի մեջ) և գեներացնում է յուրահատուկ սեսիայի նույնականացնող:
  3. Նույնականացնողի ուղարկում հաճախորդին: Սերվերը ուղարկում է այս նույնականացնողը հաճախորդին որպես cookie (Set-Cookie: SESSIONID=xyz; path=/):
  4. Պահպանում հաճախորդի կողմից: Բրաուզերը պահպանում է այս cookie-ն և ուղարկում է այն բոլոր հաջորդական հարցումներում նույն դոմենին (Cookie: SESSIONID=xyz):
  5. Նույնականացում սերվերում: Երբ ստացվում է յուրաքանչյուր հաջորդ հարցում cookie-ով, որը պարունակում է սեսիայի նույնականացնողը, սերվերը օգտագործում է այն համապատասխան սեսիան գտնելու և օգտագործողի պահված տվյալները ստանալու համար:
  6. Սեսիայի ավարտ: Սեսիան կարող է ավարտվել անգործության ժամանակահատվածի ավարտով, օգտագործողի հստակ դուրս գալու (logout) կամ բրաուզերի փակման դեպքում (եթե cookie-ի ժամկետը չի սահմանափակվում):

Օրինակ՝ սեսիայի օգտագործում՝ թույլատրելու համար մուտքի տվյալները պահել:

// Java Servlets-ի օրինակ
HttpSession session = request.getSession(); // Ստանում կամ ստեղծում է սեսիան

// Ստուգում է, արդյոք օգտվողը մուտք է գործել
if (session.getAttribute("loggedInUser") == null) {
    // Օգտվողը մուտք չի գործել, ուղղորդում է մուտքի էջ
    response.sendRedirect("/login");
} else {
    // Օգտվողը մուտք է գործել, ստանում է տվյալները
    User user = (User) session.getAttribute("loggedInUser");
    // ... աշխատում է օգտվողի տվյալների հետ
}

Սեսիայի պահեստներ:

  • Հիշողության մեջ սերվերի (հարմար է փոքր ծրագրերի համար):
  • Սերվերի ֆայլային համակարգում:
  • Տվյալների բազայում (կլասիկ տարբերակ, ընդլայնելի):
  • Տարածված cache-ներում (Redis, Memcached)՝ բազմասերվերային ընդլայնման համար:

Անվտանգություն:

  • Օգտագործում "secure" և "HttpOnly" նշաններ cookie-ների համար:
  • Սեսիայի ID-ն վերագնահատում է հաջող մուտք գործելուց հետո:
  • Սեսիայի ժամանակավոր սահմանափակումը:
  • Պաշտպանություն Session Hijacking-ից (սեսիայի նույնականացնողի խափանում):