Junior
İstifadəçi doğrulama prosesi necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
İstifadəçinin frontend tətbiqində autentifikasiya prosesi ümumilikdə aşağıdakı addımlardan ibarətdir:
- Giriş məlumatlarının sorğulanması: İstifadəçi sayt və ya tətbiqdəki formaya istifadəçi adı və şifrəni daxil edir.
- Məlumatların serverə göndərilməsi: Frontend bu məlumatları HTTP sorğusu (adətən
POST) vasitəsilə autentifikasiya üçün xüsusi endpoint-ə göndərir. Məlumatlar JSON və ya FormData formatında ola bilər. - Serverdə məlumatların yoxlanması: Backend məlumatları alır, onları verilənlər bazasında yoxlayır (məsələn, istifadəçi adı mövcuddurmu və daxil edilən şifrənin hash-i verilənlər bazasındakı hash-ə uyğunmu).
- Token/sessiya yaradılması: Əgər giriş məlumatları düzgün olarsa, server unikal autentifikasiya tokeni yaradır. Bu, ola bilər:
- Sessiya ID: Server sessiya yaradır və onu istifadəçi ilə əlaqələndirir, sessiya identifikatorunu (məsələn,
HttpOnlycookie-də) göndərir. - Token (məsələn, JWT): Server istifadəçi və onun hüquqları haqqında məlumatları ehtiva edən token yaradır və onu imzalayır. Bu token istifadəçiyə göndərilir.
- Sessiya ID: Server sessiya yaradır və onu istifadəçi ilə əlaqələndirir, sessiya identifikatorunu (məsələn,
- Token/sessiya məlumatlarının istifadəçiyə göndərilməsi: Server frontend-ə yaradılmış autentifikasiya tokenini göndərir.
- Əgər sessiya ID istifadə olunursa, adətən
Set-Cookiebaşlığı ilə göndərilir. - Əgər token istifadə olunursa, bu, JSON cavabında və ya
Authorizationbaşlığında (Bearer <token>) ola bilər.
- Əgər sessiya ID istifadə olunursa, adətən
- Tokenin müştəri tərəfində saxlanması: Frontend tokeni alır və növbəti sorğular üçün saxlayır.
- Sessiya ID brauzer cookiesində avtomatik saxlanır.
- Token localStorage, sessionStorage və ya cookiesdə (məsələn,
HttpOnly) saxlanıla bilər. XSS hücumlarından qorunmaq üçünHttpOnlycookies istifadə etmək tövsiyə olunur. JWT üçün yeniləmə tokeni dəHttpOnlycookies-də saxlamaq olar.
- Tokenin qorunan sorğularda istifadə olunması: Növbəti sorğularda, frontend saxlanmış tokeni hər sorğuda göndərir.
- Sessiyalar üçün brauzer avtomatik olaraq müvafiq cookies-i göndərir.
- Token üçün frontend tokeni açıq şəkildə
Authorizationbaşlığına əlavə etməlidir (Authorization: Bearer <token>).
- Tokenin serverdə yoxlanması: Hər qorunan resursa sorğu gəldikdə, server sorğudan tokeni çıxarır və onun düzgünlüyünü yoxlayır (məsələn, tokenin müddəti, imzası, belə bir ID ilə sessiyanın mövcudluğu).
- Autorizasiya: Əgər token etibarlıdırsa, server bu token ilə əlaqəli istifadəçini müəyyən edir və onun resursa giriş hüquqlarını yoxlayır.
- Sorğunun icrası: Əgər istifadəçi autentifikasiya olunub və icazə verilibsə, server sorğunu icra edir və cavab göndərir. Əks halda, server xəta göndərir (
401 Unauthorizedvə ya403 Forbidden).
Bu autentifikasiya sxemləri müxtəlif ola bilər (sessiyalar, JWT tokenləri, OAuth2, OpenID Connect və s.), lakin əsas addımlar istifadəçi identifikasiyası üçün tokenin alınması və istifadəsində oxşardır.
Fetch API və token ilə məlumat göndərmək nümunəsi:
// İstifadəçi məlumatları
const userData = {
username: 'user123',
password: 'securepassword'
};
// Məlumatların göndərilməsi
fetch('/api/login', { // Autentifikasiya endpointi
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(userData)
})
.then(response => {
if (!response.ok) {
throw new Error('Giriş uğursuz oldu');
}
return response.json(); // JSON formatında token gözləyirik
})
.then(data => {
const authToken = data.token; // Cavabdan token alırıq
localStorage.setItem('authToken', authToken); // Tokeni saxlayırıq
console.log('Giriş uğurlu, token saxlanıldı.');
// İstifadəçini qorunan səhifəyə yönləndir
})
.catch(error => {
console.error('Autentifikasiya xətası:', error);
// Xəta mesajını istifadəçiyə göstər
});
// Saxlanmış token ilə qorunan sorğu
const token = localStorage.getItem('authToken');
if (token) {
fetch('/api/protected-resource', {
method: 'GET',
headers: {
'Authorization': `Bearer ${token}` // Tokeni başlığa əlavə et
}
})
.then(response => {
if (!response.ok) {
if (response.status === 401) {
console.log('Token vaxtı bitib və ya yalnışdır. Giriş səhifəsinə yönləndirilir.');
localStorage.removeItem('authToken');
// window.location.href = '/login';
}
throw new Error('Qorunan resursu almaqda xəta');
}
return response.json();
})
.then(data => {
console.log('Qorunan məlumat:', data);
})
.catch(error => {
console.error('Qorunan resursu almaqda xəta:', error);
});
} else {
console.log('Auth token tapılmadı. Giriş səhifəsinə yönləndirilir.');
// window.location.href = '/login';
}
Əhəmiyyətli təhlükəsizlik aspektləri:
- Həmişə HTTPS istifadə edin.
- Tokenləri təhlükəsiz saxlayın.
- Qısa müddətli tokenlər və yeniləmə tokenləri istifadə edin.
- Serverdə bütün məlumatları yoxlayın.