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:
- Form: kullanıcı e-posta ve parolayı girer. Frontend temel doğrulama yapar (boş alan, format), ama asıl doğrulama sunucudadır.
- İstek:
POST /api/auth/loginHTTPS üzerinden JSON ile gönderilir. - Rate limit: IP ve hesap bazında deneme sayısı kontrol edilir.
- 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.
- Parola doğrulama:
bcrypt.compareile hash karşılaştırılır. - MFA (varsa): ikinci adım istenir.
- Oturum oluşturma: rastgele session ID üretilir, Redis/DB'ye
{userId, expiresAt}yazılır. Eski session ID varsa yenilenir. - Yanıt:
Set-Cookie: sid=...; HttpOnly; Secure; SameSite=Laxve kullanıcı bilgisi döner. - Frontend: kullanıcı state'i güncellenir (context/store), korumalı sayfaya yönlendirilir.
- Sonraki istekler: tarayıcı cookie'yi otomatik gönderir; middleware oturumu doğrular ve
req.userekler. - Çı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.
İlgili Web Mimarisi soruları
- SSR, SSG ve CSR arasındaki farklar nelerdir?
- Monorepo nedir? Avantajları, dezavantajları ve araçları nelerdir?
- MVC mimarisi nedir? Modern web uygulamalarında nasıl karşılık bulur?
- Büyük dosya yükleme akışını nasıl tasarlarsınız? Presigned URL nedir?
- Backend for Frontend (BFF) deseni nedir, ne zaman kullanılır?
- WebSocket, Server-Sent Events (SSE) ve polling arasındaki farklar nelerdir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.