Sobes.tech
Junior

Foydalanuvchining tizimga kirish jarayonining mexanikasini tavsiflang.

sobes.tech AI

AIdan javob

  1. Foydalanuvchi kirish sahifasida login va parol ma'lumotlarini kiritadi.
  2. Brauzer, kiritilgan ma'lumotlar bilan serverga HTTP POST so'rovini yuboradi.
  3. Server so'rovni qabul qiladi va kirish ma'lumotlarini autentifikatsiya komponentiga uzatadi.
  4. Autentifikatsiya komponenti qabul qilingan ma'lumotlarni foydalanuvchilar bazasidagi ma'lumotlar bilan tekshiradi:
    • Bunday login bilan foydalanuvchi mavjudligini tekshiradi.
    • Kiritilgan parolni hash qiladi va uni ushbu foydalanuvchiga tegishli saqlangan parol hash bilan solishtiradi.
  5. Muvaffaqiyatli autentifikatsiya holatida:
    • Server foydalanuvchi uchun sessiya yaratadi yoki kirish tokenini (masalan, JWT) ishlab chiqaradi.
    • Sessiya/token foydalanuvchining yagona identifikatori bilan bog'langan bo'lib, uning kirish huquqlari haqida ma'lumotlarni o'z ichiga oladi.
    • Server 200 OK kodli HTTP javob yuboradi va sessiya (cookie orqali) yoki kirish tokenini foydalanuvchining brauzeriga yuboradi.
    • Brauzer cookie yoki tokenni saqlaydi.
    • Foydalanuvchi asosiy sahifa yoki maqsadli sahifaga yo'naltiriladi.
  6. Muvaffaqiyatsiz autentifikatsiya holatida (noto'g'ri login yoki parol):
    • Server xato kodi bilan HTTP javob yuboradi (masalan, 401 Unauthorized) va xato xabarini yuboradi.
    • Brauzer foydalanuvchiga login sahifasida xato xabarini ko'rsatadi.
  7. Keyingi so'rovlar uchun, brauzer avtomatik ravishda saqlangan sessiya (cookie) yoki kirish tokenini HTTP so'rovining sarlavhasida yuboradi.
  8. Server sessiya/tokenning amal qilish muddatini tekshiradi va autentifikatsiya tasdiqlangan va foydalanuvchining kerakli huquqlari bo'lsa, resursga kirishga ruxsat beradi.

Misol (pseudokod):

# Serverda
def login(username, password):
    user = database.find_user(username)
    if user and hash(password) == user.hashed_password:
        session_id = generate_session_id(user.id)
        database.save_session(session_id, user.id)
        return {"status": "success", "session_id": session_id}
    else:
        return {"status": "fail", "message": "Noto'g'ri ma'lumotlar"}

# Mijozda (brauzerda)
async function handle_login_submit(event):
    event.preventDefault();
    const username = document.getElementById("username").value;
    const password = document.getElementById("password").value;

    const response = await fetch("/api/login", {
        method: "POST",
        headers: {
            "Content-Type": "application/json"
        },
        body: JSON.stringify({ username, password })
    });

    const data = await response.json();
    if (data.status === "success") {
        // Server session_id bilan cookie o'rnatadi yoki javobdagi tokenni saqlashimiz mumkin
        window.location.href = "/dashboard";
    } else {
        alert(data.message);
    }