Bir kullanıcı girişinin uçtan uca akışını (frontend'den veritabanına) anlatın.

Cevap

Cookie tabanlı oturum kullanan tipik bir web uygulaması için:

  1. Form: kullanıcı e-posta ve parolayı girer. Frontend temel doğrulama yapar (boş alan, format), ama asıl doğrulama sunucudadır.
  2. İstek: POST /api/auth/login HTTPS üzerinden JSON ile gönderilir.
  3. Rate limit: IP ve hesap bazında deneme sayısı kontrol edilir.
  4. Kullanıcı bulma: e-postaya göre kullanıcı çekilir. Kullanıcı yoksa da parola hatası ile aynı mesaj döner ("E-posta veya parola hatalı"), böylece hesap varlığı sızdırılmaz.
  5. Parola doğrulama: bcrypt.compare ile hash karşılaştırılır.
  6. MFA (varsa): ikinci adım istenir.
  7. Oturum oluşturma: rastgele session ID üretilir, Redis/DB'ye {userId, expiresAt} yazılır. Eski session ID varsa yenilenir.
  8. Yanıt: Set-Cookie: sid=...; HttpOnly; Secure; SameSite=Lax ve kullanıcı bilgisi döner.
  9. Frontend: kullanıcı state'i güncellenir (context/store), korumalı sayfaya yönlendirilir.
  10. Sonraki istekler: tarayıcı cookie'yi otomatik gönderir; middleware oturumu doğrular ve req.user ekler.
  11. Çıkış: sunucuda oturum silinir, cookie temizlenir.
app.post("/api/auth/login", loginLimiter, async (req, res) => {
  const user = await db.user.findUnique({ where: { email: req.body.email } });
  const ok = user && (await bcrypt.compare(req.body.password, user.passwordHash));
  if (!ok) return res.status(401).json({ error: "E-posta veya parola hatalı" });

  req.session.regenerate(() => {
    req.session.userId = user.id;
    res.json({ id: user.id, name: user.name });
  });
});

Token (JWT) tabanlı yaklaşımda 7. adımda kısa ömürlü access token ve HttpOnly cookie'de refresh token üretilir; access token süresi dolunca frontend sessizce yeniler.

  1. SSR, SSG ve CSR arasındaki farklar nelerdir?OrtaWeb MimarisiFull Stack
  2. Monorepo nedir? Avantajları, dezavantajları ve araçları nelerdir?ZorWeb MimarisiFull Stack
  3. MVC mimarisi nedir? Modern web uygulamalarında nasıl karşılık bulur?KolayWeb MimarisiFull Stack
  4. Büyük dosya yükleme akışını nasıl tasarlarsınız? Presigned URL nedir?ZorWeb MimarisiFull Stack
  5. Backend for Frontend (BFF) deseni nedir, ne zaman kullanılır?OrtaWeb MimarisiFull Stack
  6. WebSocket, Server-Sent Events (SSE) ve polling arasındaki farklar nelerdir?OrtaWeb MimarisiFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle