🔐 Rails 7'de Devise ile Kullanıcı Kimlik Doğrulama Kurulumu
Meta Açıklaması (155 karakter): Ruby on Rails 7 uygulamanıza Devise gem’iyle kullanıcı kayıt, giriş ve çıkış işlemlerini kolayca ekleyin. Adım adım kimlik doğrulama rehberi.
🧠 Bu Rehberde Ne Öğreneceksiniz
Bu rehberde, Ruby on Rails 7 uygulamanıza Devise gem kullanarak kullanıcı kayıt, giriş ve çıkış sistemi kurmayı öğreneceksiniz. Devise, kullanıcı oturum yönetimini sıfırdan yazma ihtiyacını ortadan kaldırır. Şifre sıfırlama, e-posta doğrulama, oturum hatırlama gibi özellikleri hazır olarak sunar.
Amaç: Rails projelerinde güvenli, üretim ortamına hazır bir kimlik doğrulama sistemi kurmak. Sonuç: Kullanıcılar kayıt olabilir, giriş yapabilir ve oturumlarını yönetebilir.
⚙️ Ön Koşullar
Başlamadan önce aşağıdakilere sahip olun:
- Ruby 3.0.2+ ve Rails 7.0.3+
- Node.js (Rails Asset Pipeline için gereklidir)
- Temel Ruby on Rails bilgisi
- Aktif internet bağlantısı
1️⃣ Yeni Bir Rails Uygulaması Oluşturma
Yeni bir Rails projesi başlatın:
rails new blog
Bu komut,
blogadında yeni bir proje klasörü oluşturur.
Proje dizinine geçin:
cd blog
Rails sunucusunu başlatın:
bundle exec rails server
http://localhost:3000 adresine giderek karşılama sayfasını görebilirsiniz.
2️⃣ Özel Bir Ana Sayfa Oluşturma
Varsayılan sayfayı değiştirmek için kök rotayı belirleyin:
nano config/routes.rb
Aşağıdaki satırı ekleyin:
Rails.application.routes.draw do
root to: "home#index"
end
Ana URL’yi HomeController’daki
indexaksiyonuna yönlendirir.
HomeController oluşturun:
rails g controller Home index
Gerekli controller ve view dosyalarını oluşturur.
app/views/home/index.html.erb dosyasını açın:
<h1>Merhaba Rabisu Bulut Kullanıcısı!</h1>
http://localhost:3000’u yenileyerek kontrol edin.
3️⃣ Devise Gem’ini Kurma ve Yapılandırma
Sunucuyu durdurun (CTRL + C) ve Gemfile’a Devise’ı ekleyin:
gem "devise"
Gem’i yükleyin:
bundle install
Devise kurulumunu başlatın:
bundle exec rails g devise:install
Bu komut
config/initializers/devise.rbveconfig/locales/devise.en.ymldosyalarını oluşturur.
Turbo Stream Uyumluluğu Ekleme
Rails 7 ile Devise’in uyumlu çalışması için devise.rb dosyasını düzenleyin:
nano config/initializers/devise.rb
Aşağıdaki satırı Devise.setup bloğu içine ekleyin:
config.navigational_formats = ['*/*', :html, :turbo_stream]
Bu, Devise’ın Turbo Stream (Hotwire) ile hatasız çalışmasını sağlar.
Flash Mesajlarını Ekleyin
Bildirim mesajlarını göstermek için:
nano app/views/layouts/application.html.erb
<%= yield %> satırının hemen üstüne ekleyin:
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
Başarılı giriş veya hata mesajlarını gösterebilirsiniz.
4️⃣ Kullanıcı Modelini Oluşturma ve Veritabanı Migrasyonu
User modelini Devise ile oluşturun:
bundle exec rails g devise user
Bu komut
Usermodelini veuserstablosu için migration dosyasını oluşturur. Ayrıcaconfig/routes.rbdosyasına otomatik olarakdevise_for :userseklenir.
Veritabanını güncelleyin:
bundle exec rails db:migrate
Rails sunucusunu yeniden başlatın:
bundle exec rails server
Tarayıcıda http://localhost:3000/users/sign_up adresine giderek kayıt formunu test edin.
5️⃣ Ana Sayfaya Giriş / Çıkış Linkleri Ekleme
Ana sayfa görünüm dosyasını düzenleyin:
nano app/views/home/index.html.erb
Aşağıdaki içeriği ekleyin:
<% if user_signed_in? %>
<div>Hoş geldin <%= current_user.email %>!</div>
<%= button_to "Çıkış Yap", destroy_user_session_path, method: :delete %>
<% else %>
<%= button_to "Giriş Yap", new_user_session_path %>
<%= button_to "Kayıt Ol", new_user_registration_path %>
<% end %>
<h1>Merhaba Rabisu Bulut Kullanıcısı!</h1>
Açıklama:
- user_signed_in? → Kullanıcının giriş yapıp yapmadığını kontrol eder.
- current_user → Oturumdaki kullanıcının verilerini döndürür.
Sayfayı yenileyin: Kayıtlı değilseniz “Giriş Yap / Kayıt Ol” butonlarını görürsünüz. Kayıt olduktan sonra, e-posta adresiniz görüntülenir.
❓ Sıkça Sorulan Sorular (SSS)
1. Devise hangi modülleri içeriyor?
database_authenticatable, registerable, recoverable, rememberable ve validatable.
Ek olarak confirmable ve lockable modülleri de aktif edilebilir.
2. Turbo Stream neden önemli?
Rails 7’de Devise, Hotwire (Turbo) ile entegre çalışır. Bu ayar olmadan “undefined method user_url” hatası alabilirsiniz.
3. Devise rotalarını nasıl listelerim?
Aşağıdaki komutla tüm kullanıcı yollarını görebilirsiniz:
bundle exec rails routes
4. Devise formlarını özelleştirebilir miyim?
Evet, görünümleri proje içine kopyalayarak düzenleyebilirsiniz:
bundle exec rails g devise:views
5. Neden sunucuyu yeniden başlatmam gerekiyor?
Devise initializer dosyası yalnızca Rails başlatıldığında yüklenir. Yeni ayarların geçerli olması için sunucuyu yeniden başlatmak gerekir.
🎯 Sonuç
Artık Rails 7 uygulamanızda Devise ile çalışan, güvenli ve üretim ortamına hazır bir kimlik doğrulama sistemi var. Kullanıcılar kayıt olabilir, giriş yapabilir, oturumlarını yönetebilir.
💡 Uygulamanızı şimdi Rabisu Bulut platformunda barındırarak performans ve güvenliği bir arada deneyebilirsiniz.