Skip to main content
Çalıştırılabilir WCAG 2.2.5

2.2.5 Yeniden Kimlik Doğrulama

Kimlik doğrulanmış bir oturum sona erdiğinde, kullanıcı yeniden kimlik doğrulaması yaptıktan sonra veri kaybı olmadan faaliyete devam edebilmelidir.

Level AAA Moderate WCAG 2.0 (new) WCAG 2.1 WCAG 2.2

Bu kural ne anlama geliyor

WCAG 2.2.5, kimlik doğrulanmış bir oturum sona erdiğinde ve kullanıcı yeniden kimlik doğrulaması yapması gerektiğinde (tekrar giriş yapmak), uygulamanin oturum sona ermeden önceki tüm verileri ve durumu korumasını gerektirir. Tekrar giriş yaptıktan sonra kullanıcı, tüm form verileri, secimler ve ilerlemesi bozulmadan tam olarak kaldigi yere dondurilmelidir.

Bu, oturumlarin sona ermesini engellemez — güvenlik gereksinimleri zaman asimlarini zorunlu kilabilir. Ancak oturum suresinin dolmasinin kullanıcıları çalışmasını yok ederek cezalandirmamasini sağlar. Uygulama, oturum sona ermeden önce kullanıcının durumunu sunucu veya istemci tarafında kaydetmeli ve yeniden kimlik dogrulamasindan sonra geri yuklemelidir.

Neden önemlidir

Engelli kullanıcılar genellikle gorevleri tamamlamak için önemli ölçüde daha uzun süre harcarlar. Karmaşık bir formu ekran okuyucu ile dolduran görme engelli bir kullanıcı 30-60 dakika surebilir. Oturum 45. dakikada sona erer ve tüm form verileri kaybolursa, kullanıcı bastan başlamak zorundadır — potansiyel olarak bir saatlik dikkatli calismayi kaybeder. Bu, daha fazla zamana ihtiyaç duyan engelli kullanıcıları orantisiz olarak etkiler.

Engeli olmayan kullanıcılar için bile, oturum zaman acimindan sonra veri kaybetmek sınır bozucu ve guveni zedeler. Bilişsel engelli kullanıcılar için bir kesintiden sonra bilgileri hatirlamak ve yeniden girmek son derece zor olabilir. Yeniden kimlik doğrulama boyunca durumu korumak, surekliligi sağlar ve kullanıcının zaman ve caba yatirimina saygı gösterir.

İlgili axe-core kuralları

Bu kriter için otomatik axe-core kuralı bulunmamaktadır. Oturum yönetimi ve veri koruma, istemci tarafı DOM analizi ile tespit edilemeyen sunucu tarafı konularidir. Oturum süresi dolma sınırları boyunca manuel test gereklidir.

Nasıl test edilir

Test, çeşitli gorevler sırasında oturum suresinin dolmasini tetiklemeyi ve veri korumanin dogrulanmasini gerektirir.

  1. Kimlik dogrulanmisken bir formu doldurmaya veya çok adımlı bir görev gerçekleştirmeye başlayın.
  2. Oturumun sona ermesini bekleyin (veya geliştirici araçları ya da sunucu yapılandırması aracılığıyla manuel olarak sonlandirin).
  3. Yeniden kimlik doğrulaması yapın (tekrar giriş yapın).
  4. Önceden girilen tüm form verilerinin, secimlerin, kayma konumunun ve görev ilerlemesinin geri yuklendigini doğrulayın.
  5. Farklı etkinlik türleri boyunca test edin: formlar, dosya yuklemeleri, çok adımlı sihirbazlar, içerik düzenleme.
  • Kullanıcının oturum sona ermeden önce olduğu sayfa ve bağlama yonlendirildigini doğrulayın.

Nasıl düzeltilir

Oturum süresi dolmadan önce veya sırasında kullanıcı ilerlemesini kaydeden durum koruma uygulayın.

Oturum geri yuklemeli otomatik kaydetme

// Form durumunu periyodik olarak ve oturum sona ermeden önce kaydedin
function formDurumunuOtomatikKaydet(formId) {
  const form = document.getElementById(formId);
  const formVerisi = new FormData(form);
  const durum = Object.fromEntries(formVerisi.entries());

  // Sunucuya kaydet (kullanıcı hesabiyla ilişkili)
  fetch('/api/taslak-kaydet', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      formId,
      durum,
      url: window.location.href,
      kaydirmaKonumu: window.scrollY
    })
  });
}

// Her 30 saniyede otomatik kaydet
setInterval(() => formDurumunuOtomatikKaydet('ana-form'), 30000);

// Gorunurluk değişikliğinde kaydet
document.addEventListener('visibilitychange', () => {
  if (document.hidden) formDurumunuOtomatikKaydet('ana-form');
});

Yeniden kimlik dogrulamasindan sonra durumu geri yükleme

// Başarılı giristen sonra kaydedilmiş durumu kontrol edin
async function girisBasariliysa(kullaniciId) {
  const yanıt = await fetch(
    `/api/taslak-geri-yükle?kullaniciId=${kullaniciId}`
  );
  const taslak = await yanıt.json();

  if (taslak && taslak.url) {
    sessionStorage.setItem('geri-yükle-taslak', JSON.stringify(taslak));
    window.location.href = taslak.url;
  }
}

// Sayfa yüklemesinde taslağı geri yükle
window.addEventListener('load', () => {
  const taslak = sessionStorage.getItem('geri-yükle-taslak');
  if (taslak) {
    const { durum, kaydirmaKonumu } = JSON.parse(taslak);
    formVerisiniGeriYukle(durum);
    window.scrollTo(0, kaydirmaKonumu);
    sessionStorage.removeItem('geri-yükle-taslak');
    bildirimiGoster('Önceki ilerlemeniz geri yuklendi.');
  }
});

Sık yapılan hatalar

  • Oturum suresinin dolmasi, giriş sayfasina ve ardından orijinal sayfa yerine ana sayfaya yönlendirmek.
  • Form durumunu yalnızca sessionStorage'da kaydetmek — bu, tarayıcı sekmesi kapatıldığında temizlenir.
  • Çok adımlı sihirbazlar için durumu kaydetmemek, kullanıcının iş akisindaki konumunu kaybetmek.
  • Form girislerini geri yüklemek ancak yeniden yükleme gerektiren dosya yükleme secimlerini geri yuklememek.
  • Kullaniciyi ilerlemesinin kaydedildigini ve yeniden kimlik dogrulamasindan sonra geri yuklenecegini bildirmemek.
  • Yalnızca en son sayfa için durumu korumak, karmaşık çok sekmeli iş akışları için değil.

Kaynaklar