Junior
Foydalanuvchining tizimga kirish jarayonining mexanikasini tavsiflang.
sobes.tech AI
AIdan javob
- Foydalanuvchi kirish sahifasida login va parol ma'lumotlarini kiritadi.
- Brauzer, kiritilgan ma'lumotlar bilan serverga HTTP POST so'rovini yuboradi.
- Server so'rovni qabul qiladi va kirish ma'lumotlarini autentifikatsiya komponentiga uzatadi.
- 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.
- 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.
- 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.
- Keyingi so'rovlar uchun, brauzer avtomatik ravishda saqlangan sessiya (cookie) yoki kirish tokenini HTTP so'rovining sarlavhasida yuboradi.
- 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);
}