Sobes.tech
Junior

İstifadəçinin sistemə giriş prosesinin mexanikasını təsvir edin.

sobes.tech Süni İntellekt

AI-dan cavab

  1. İstifadəçi giriş səhifəsində istifadəçi adı və şifrə məlumatlarını daxil edir.
  2. Brauzer, daxil edilən məlumatlarla serverə HTTP POST sorğusu göndərir.
  3. Server sorğunu qəbul edir və giriş məlumatlarını autentifikasiya komponentinə ötürür.
  4. Autentifikasiya komponenti alınan məlumatları istifadəçi məlumat bazasındakı məlumatlarla yoxlayır:
    • Belə istifadəçi adı ilə istifadəçi mövcuddurmu, yoxlayır.
    • Daxil edilən şifrəni hash edir və onu həmin istifadəçi üçün saxlanılan şifrə hash ilə müqayisə edir.
  5. Uğurlu autentifikasiya halında:
    • Server istifadəçi üçün sessiya yaradır və ya giriş tokeni (məsələn, JWT) yaradır.
    • Sessiya/token istifadəçinin unikal identifikatoru ilə əlaqələndirilir və onun giriş hüquqları haqqında məlumatlar ehtiva edir.
    • Server HTTP cavabı ilə 200 OK kodunu göndərir və sessiyanı (cookie vasitəsilə) və ya giriş tokenini istifadəçinin brauzerinə ötürür.
    • Brauzer cookie və ya tokeni saxlayır.
    • İstifadəçi əsas və ya hədəf səhifəyə yönləndirilir.
  6. Uğursuz autentifikasiya (yanlış istifadəçi adı və ya şifrə):
    • Server HTTP cavabı ilə səhv kodu (məsələn, 401 Unauthorized) və səhv mesajı göndərir.
    • Brauzer istifadəçiyə giriş səhifəsində səhv mesajı göstərir.
  7. Sonrakı qorunan resurslara sorğularda, brauzer avtomatik olaraq saxlanılan sessiya (cookie) və ya giriş tokenini HTTP sorğusunun başlıqlarında göndərir.
  8. Server sessiya/tokenin etibarlılığını yoxlayır və autentifikasiya təsdiqlənmiş və istifadəçinin lazımi hüquqları varsa, resursa girişə icazə verir.

Nümunə (pseudokod):

# Serverdə
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": "Etibarsız giriş məlumatları"}

# Müştəri tərəfində (brauzer)
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 ilə cookie quracaq və ya cavabdan tokeni yadda saxlaya bilərik
        window.location.href = "/dashboard";
    } else {
        alert(data.message);
    }