NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

Bu yapıya uygun bir NestJS JWT tabanlı kimlik doğrulama sistemi oluşturmak için detaylı bir yol haritası izleyebiliriz. Her endpoint'i adım adım nasıl yapılandırabileceğimizi açıklayarak ilerleyelim. İşte detaylı yol haritası:

1. Proje Yapısını Hazırlama
İlk adımda, projedeki temel modülleri ve servisleri doğru şekilde kurmamız gerekiyor.

Modules: AuthModule, UsersModule, ve JWT modüllerini kuracağız.
Controllers: Her endpoint için AuthController'a gerekli fonksiyonları tanımlayacağız.
Services: AuthService ve UsersService servislerini kullanacağız.
Guards: JWT ile koruma sağlamak için JwtAuthGuard ve oturum açma için LocalAuthGuard kullanacağız.
Entities: Kullanıcı verilerini yönetmek için UserEntity'yi hazırlamamız gerekecek.
2. AuthController Dosyası
Tüm /api/auth/ endpoint’lerinin işlemleri burada gerçekleşecek.

Gerekli Endpointler:

POST /api/Auth/register: Kullanıcı kaydı
POST /api/Auth/login: Kullanıcı girişi
POST /api/Auth/logout: Kullanıcı çıkışı
POST /api/Auth/refresh-token: Token yenileme
POST /api/Auth/forgot-password: Şifre sıfırlama talebi
POST /api/Auth/reset-password: Şifre sıfırlama işlemi
GET /api/Auth/confirm-email: Email onayı
Her birine karşılık gelen controller metodlarını yazacağız. Swagger ile entegrasyon yaparak API dokümantasyonunu da oluşturacağız.

3. AuthService Dosyası
Bu dosyada iş mantığını yazacağız. Örneğin, kayıt işlemi sırasında şifrelerin doğrulanması ve hashlenmesi gibi işlemler burada olacak. JWT token üretimi ve doğrulaması da burada yapılacak.

Önemli Adımlar:

Kayıt (register): Kullanıcı veritabanına kaydedilecek, şifre hashlenecek.
Giriş (login): Kullanıcı doğrulandıktan sonra access ve refresh token üretilecek.
Çıkış (logout): Refresh token veritabanından silinecek.
Token Yenileme (refresh-token): Refresh token doğrulandıktan sonra yeni access token üretilecek.
Şifre Sıfırlama (forgot-password): Şifre sıfırlama işlemleri ve email gönderimi.
Şifre Güncelleme (reset-password): Yeni şifre hashlenip güncellenecek.
Email Onayı (confirm-email): Kullanıcının email doğrulaması yapılacak.
4. UsersService Dosyası
Kullanıcı işlemlerini yönetecek servis.

findByEmail: Email ile kullanıcıyı bulma.
create: Yeni kullanıcı oluşturma.
updateRefreshToken: Kullanıcı için refresh token’ı güncelleme.
5. JwtStrategy ve Guards
Kullanıcının her istek için token doğrulaması yapması gereken durumlarda JWT stratejisi devreye girecek. Bu, genellikle @UseGuards(JwtAuthGuard) ile korunmuş endpointlerde olur.

JwtAuthGuard: JWT token’ı kontrol ederek erişim izni verir.
LocalAuthGuard: Giriş yapma esnasında kullanıcı bilgilerini doğrular.
6. DTO'lar (Data Transfer Objects)
API'de kullanılan veri yapısını doğrulamak için DTO'ları kullanacağız.

RegisterDto: Kayıt sırasında gerekli alanlar (email, password, confirmPassword, nameSurname).
LoginDto: Giriş yaparken email ve password.
RefreshTokenDto: Refresh token talebinde gerekli alanlar.
ResetPasswordDto: Şifre sıfırlama işlemi.
7. Güvenlik İyileştirmeleri
Şifrelerin hashlenmesi ve karşılaştırılması (bcrypt kullanarak).
Refresh token’ların da hashlenerek saklanması.
HttpOnly ve Secure cookie ayarları ile güvenli oturum yönetimi.
8. JWT Ayarları
JwtModule.registerAsync ile token'ların süreleri ve gizli anahtarlarını process.env değişkenleri ile dinamik hale getireceğiz.

Adımlar:

JWT Access Token: 15 dakika geçerli olan access token oluşturulacak.
JWT Refresh Token: 7 gün geçerli olan refresh token oluşturulacak.
Çevre Değişkenleri (.env):
JWT_SECRET: Access token için gizli anahtar.
JWT_REFRESH_SECRET: Refresh token için gizli anahtar.
JWT_EXPIRATION: Access token geçerlilik süresi.
JWT_REFRESH_EXPIRATION: Refresh token geçerlilik süresi.
Uygulama Adımları:
Modül Kurulumu ve JWT Entegrasyonu
Proje yapısına uygun olarak JWT modülü ve Passport modülünü entegre edelim.
Controller ve Servislerin Yapılandırılması
Her bir endpoint'e uygun controller ve servis mantığını geliştirelim.
Token Yönetimi ve Cookie Ayarları
Access ve refresh token'ların doğru yönetimini sağlayalım, güvenli cookie ayarlarını yapalım.
DTO'ların Doğru Şekilde Kullanılması
Swagger dokümantasyonu için DTO'ları doğru bir şekilde tanımlayalım.
Güvenlik İyileştirmeleri
Şifre ve token'ların güvenli saklanmasını sağlayalım.
     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.