Junior
Пайдаланучунун системага кирүү процесси механикасын сүрөттөп бериң.
sobes.tech AI
AIден жооп
- Колдонуучу логин жана сырсөздү киргизет кирүү барагында.
- Браузер HTTP POST суроо-талапты серверге жөнөтөт киргизилген маалыматтар менен.
- Сервер суранычты кабыл алып, маалыматтарды аутентификация компонентине өткөрөт.
- Аутентификация компоненти алынган маалыматтарды колдонуучулардын базасындагы маалыматтар менен салыштырат:
- Мындай логин менен колдонуучу бар-жогун текшерет.
- Киргизилген сырсөздүн хешин чыгарып, сакталган хеш менен салыштырат.
- Ийгиликтүү аутентификация учурында:
- Сервер колдонуучу үчүн сессия түзөт же жеткиликтүү токенди (мисалы, JWT) чыгарат.
- Сессия/токен уникалдуу колдонуучу идентификатору менен байланышкан жана анын укуктары тууралуу маалыматтарды камтыйт.
- Сервер HTTP жооп жиберет 200 OK коду менен жана сессияны (cookie аркылуу) же жеткиликтүү токенди браузерге берет.
- Браузер cookie же токенду сактайт.
- Колдонуучу негизги же максаттуу баракка которулат.
- Ийгиликсиз аутентификация учурда:
- Сервер ката коду менен жооп жиберет (мисалы, 401 Unauthorized) жана ката билдирүүсү менен.
- Браузер катаны колдонуучуга билдирет логин барагында.
- Кийинки суроолордо:
- Браузер автоматтык түрдө сакталган сессияны (cookie) же жеткиликтүү токенди HTTP сураныштардын башында жиберет.
- Сервер сессия/токендин жарактуулугун текшерет жана ресурска кирүүгө уруксат берет, эгер аутентификация тастыкталган жана колдонуучу керектүү укуктарга ээ болсо.
Мисал (псеудокод):
# Серверде
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": "Invalid credentials"}
# Клиентте (браузерде)
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") {
// Сервер cookie менен session_id орнотот, же жооптон токенди сактайбыз
window.location.href = "/dashboard";
} else {
alert(data.message);
}