Junior
İstifadəçinin sistemə giriş prosesinin mexanikasını təsvir edin.
sobes.tech Süni İntellekt
AI-dan cavab
- İstifadəçi giriş səhifəsində istifadəçi adı və şifrə məlumatlarını daxil edir.
- Brauzer, daxil edilən məlumatlarla serverə HTTP POST sorğusu göndərir.
- Server sorğunu qəbul edir və giriş məlumatlarını autentifikasiya komponentinə ötürür.
- 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.
- 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.
- 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.
- 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.
- 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);
}