Junior
Sistemde kullanıcının giriş sürecinin mekanizmasını açıklayın.
sobes.tech yapay zeka
AI'dan gelen yanıt
- Kullanıcı giriş sayfasında kullanıcı adı ve şifre bilgilerini girer.
- Tarayıcı, girilen verilerle sunucuya HTTP POST isteği gönderir.
- Sunucu, isteği alır ve kimlik doğrulama bileşimine iletir.
- Kimlik doğrulama bileşeni, alınan verileri kullanıcı veritabanındaki bilgilerle karşılaştırır:
- Bu kullanıcı adıyla bir kullanıcının olup olmadığını kontrol eder.
- Girilen şifreyi hash'ler ve bu hash'i, bu kullanıcı için saklanan şifre hash'iyle karşılaştırır.
- Başarılı kimlik doğrulama durumunda:
- Sunucu, kullanıcı için bir oturum oluşturur veya erişim token'ı (örneğin JWT) üretir.
- Oturum/token, kullanıcının benzersiz kimliğiyle ilişkilendirilir ve erişim hakları hakkında bilgi içerir.
- Sunucu, HTTP yanıtı ile 200 OK kodunu gönderir ve oturumu (cookie aracılığıyla) veya erişim token'ını kullanıcının tarayıcısına iletir.
- Tarayıcı, cookie veya token'ı saklar.
- Kullanıcı ana sayfaya veya hedef sayfaya yönlendirilir.
- Başarısız kimlik doğrulama durumunda (yanlış kullanıcı adı veya şifre):
- Sunucu, hata kodu ile HTTP yanıtı gönderir (örneğin, 401 Unauthorized) ve hata mesajı iletir.
- Tarayıcı, giriş sayfasında kullanıcıya hata mesajı gösterir.
- Güvenli kaynaklara sonraki isteklerde, tarayıcı otomatik olarak saklanan oturumu (cookie) veya erişim token'ını HTTP isteği başlıklarında gönderir.
- Sunucu, oturum/token'ın geçerliliğini kontrol eder ve kimlik doğrulama onaylandıysa ve kullanıcının gerekli hakları varsa, kaynağa erişimi izin verir.
Örnek (sözde kod):
# Sunucuda
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": "Geçersiz kimlik bilgileri"}
# İstemci tarafında (tarayıcıda)
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") {
// Sunucu, session_id ile bir cookie ayarlayacak veya yanıtın token'ını saklayabiliriz
window.location.href = "/dashboard";
} else {
alert(data.message);
}