Sobes.tech
Junior

Пайдаланучунун системага кирүү процесси механикасын сүрөттөп бериң.

sobes.tech AI

AIден жооп

  1. Колдонуучу логин жана сырсөздү киргизет кирүү барагында.
  2. Браузер HTTP POST суроо-талапты серверге жөнөтөт киргизилген маалыматтар менен.
  3. Сервер суранычты кабыл алып, маалыматтарды аутентификация компонентине өткөрөт.
  4. Аутентификация компоненти алынган маалыматтарды колдонуучулардын базасындагы маалыматтар менен салыштырат:
    • Мындай логин менен колдонуучу бар-жогун текшерет.
    • Киргизилген сырсөздүн хешин чыгарып, сакталган хеш менен салыштырат.
  5. Ийгиликтүү аутентификация учурында:
    • Сервер колдонуучу үчүн сессия түзөт же жеткиликтүү токенди (мисалы, JWT) чыгарат.
    • Сессия/токен уникалдуу колдонуучу идентификатору менен байланышкан жана анын укуктары тууралуу маалыматтарды камтыйт.
    • Сервер HTTP жооп жиберет 200 OK коду менен жана сессияны (cookie аркылуу) же жеткиликтүү токенди браузерге берет.
    • Браузер cookie же токенду сактайт.
    • Колдонуучу негизги же максаттуу баракка которулат.
  6. Ийгиликсиз аутентификация учурда:
    • Сервер ката коду менен жооп жиберет (мисалы, 401 Unauthorized) жана ката билдирүүсү менен.
    • Браузер катаны колдонуучуга билдирет логин барагында.
  7. Кийинки суроолордо:
    • Браузер автоматтык түрдө сакталган сессияны (cookie) же жеткиликтүү токенди HTTP сураныштардын башында жиберет.
  8. Сервер сессия/токендин жарактуулугун текшерет жана ресурска кирүүгө уруксат берет, эгер аутентификация тастыкталган жана колдонуучу керектүү укуктарга ээ болсо.

Мисал (псеудокод):

# Серверде
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);
    }