Uygulamamda kimlik doğrulaması için Devise kullanıyorum.
Belirli kullanıcıların oturum açmasını nasıl yasaklayabilirim - bir tür kullanıcıyı devre dışı bırakabilir miyim?
Uygulamamda kimlik doğrulaması için Devise kullanıyorum.
Belirli kullanıcıların oturum açmasını nasıl yasaklayabilirim - bir tür kullanıcıyı devre dışı bırakabilir miyim?
Yanıtlar:
Bunu şöyle yapın:
Model is_active
için çağrılan bir sütun oluşturun User
.
Ardından aşağıdaki kodu User
modele ekleyin :
class User < ActiveRecord::Base
#this method is called by devise to check for "active" state of the model
def active_for_authentication?
#remember to call the super
#then put our own check to determine "active" state using
#our own "is_active" column
super and self.is_active?
end
end
GÜNCELLEME
Matt Huggins'in belirttiği gibi, yöntem artık active_for_authentication?
( Dokümantasyon ) olarak adlandırılıyor.
active_for_authentication?
sadece yerine olarak yeniden adlandırılmış active?
.
the method is now called active_for_authentication?
yöntem adınızın active_for_authentication?
yerine olması gerektiği anlamına gelir active?
.
active_for_authentication?
halka açık bir yöntem olmalı!
super and self.is_active?
basitleştirilebilirsuper && is_active?
Bir sütun ekleyin User
modeli: allowed_to_log_in
.
Ardından şunu ekleyin /app/models/user.rb
:
def active_for_authentication?
super and self.allowed_to_log_in?
end
Kullanıcıyı özel bir mesajla bilgilendirmek isterseniz, bunu da ekleyebilirsiniz:
def inactive_message
"You are not allowed to log in."
end
Bunun oldukça önemli olduğunu düşünüyorum çünkü Devise'den gelen standart mesaj şöyle diyor:
"Hesabınız henüz aktifleştirilmedi."
Bu, kullanıcılar için kafa karıştırıcı ve gerçek sebep, onların oturum açmalarını "yasaklamış" olmanızdır.
Yetkilendirme yapmak istiyorsunuz, kimlik doğrulaması değil. Devise yalnızca kimlik doğrulama yapar.
Yani, sadece size bir kullanıcının söylediği kişi olduğunu söyler.
Siteyi kullanmasını yasaklamak için başka bir şeye ihtiyacınız var.
Yetkilendirme popüler bir konudur ve bu konuda size yardımcı olabilecek bir mücevher listesi vardır:
http://ruby-toolbox.com/categories/rails_authorization.html
Seçimini yap.
Cancan ilginizi çekiyor gibi görünüyor