5

Uygulama denetleyicimde, tüm kullanıcıların sitenin herhangi bir bölümüne devam etmeden önce oturum açmasını gerektiren basit bir yöntem istiyorum. Kimlik doğrulama için Devise kullanıyorum. Raylar: Uygulama Denetleyicisinde, giriş yapmaya zorla, oturum açma dışındaki tüm istekleri yeniden yönlendirme

Denedim:

class ApplicationController < ActionController::Base 
    ... 
    unless user_signed_in? 
    redirect_to login_path 
    end 
    ... 
end 

Bu başarıyla herkesi yönlendirir, fakat sorun aynı zamanda yeni bir kullanıcı oturumunu oluşturmak için gerekli sonrası isteğini engeller olduğunu.

Benim sorum şu ki, giriş görünümü ve giriş için posta isteği dışında tüm istekleri engellemeye ne dersiniz?

cevap

9

Devise'yi kullanmak bu kadar kolaydır. ApplicationController'ınıza before_filter :authenticate_user! eklemeniz yeterlidir.

Bu

tüm Devise wiki yazıldığından - Rails 4.2+, before_action :authenticate_user! tercih edildiği https://github.com/plataformatec/devise

Not.

+0

Elbette. Şimdiye kadar kontrolörlerin birçoğunda (ama hepsinde değil) var. Tüm siteyi geçici olarak nasıl kilitleyeceğimi ve uygulama denetleyicisinin sadece normal bir denetleyici olduğu konusunda yeterince düşünmediğimi düşünüyordum. Teşekkürler :) – Andrew

+2

Çoğunlukla bu satırı ApplicationController'a atmak ve daha sonra beyaz listeye almak istediğiniz eylemler için önceki filtreyi atlamak isteyeceksiniz. – pcg79

İlgili konular