Uygulamamda kimlik doğrulama için Devise kullanıyorum.Devise - Belirli kullanıcıların oturum açmasını nasıl yasaklarım?
Belirli kullanıcıların bir kullanıcıyı nasıl devre dışı bıraktığını nasıl yasaklarım?
Uygulamamda kimlik doğrulama için Devise kullanıyorum.Devise - Belirli kullanıcıların oturum açmasını nasıl yasaklarım?
Belirli kullanıcıların bir kullanıcıyı nasıl devre dışı bıraktığını nasıl yasaklarım?
ilginizi çekebilir benziyor:
User
modeli için is_active
adında bir sütun oluşturun.
Sonra User
modeline için aşağıdaki kodu 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 belirttiği gibi, yöntem artık active_for_authentication?
(Documentation)
teşekkürler! ihtiyacım olan buydu. –
Bunun, yalnızca "etkin" yerine "active_for_authentication?" Olarak yeniden adlandırıldığı anlaşılıyor. –
Güncelleme için teşekkürler! –
Yetkilendirmeyi değil, yetkilendirmeyi yapmak istiyorsunuz. Öte yandan, sadece authetication yapar.
I.e. Sadece bir kullanıcının size söylediği kişi olduğunu söyler.
Siteyi kullanmasını yasaklayan başka bir şeye ihtiyacınız var.
Yetkilendirme popüler bir konudur ve onunla size yardımcı olabilecek taşlar bir bütün listesi var:
http://ruby-toolbox.com/categories/rails_authorization.html
Seçiminizi yapın.
Farkı biliyorum. Mesele şu ki, belirli denetleyiciye erişemeyen, kullanıcının imzalamasını yasaklamak istiyorum. –
Böyle yap http://railscasts.com/episodes/192-authorization-with-cancan
Bu, sorulan soruya bir cevap değildir. Çoğu kişi yetkilendirme ve kimlik doğrulama arasındaki farkı bilir. Soru, bir kullanıcının giriş yapamaması için bunu nasıl yaptığınızdı. – isaacsloan
denir
bir sütun ekleyin User
model: allowed_to_log_in
.
Sonra /app/models/user.rb
bu ekleyin:
def active_for_authentication?
super and self.allowed_to_log_in?
end
özel bir mesaj ile kullanıcıya bilgi isterseniz siz de bu ekleyebilirsiniz:
def inactive_message
"You are not allowed to log in."
end
Ben oldukça önemli olduğunu düşünüyorum çünkü Standart mesajdan Devise şöyle diyor:
"Hesabınız henüz aktif değil." kullanıcılar ve gerçek bir nedenle kafa karıştırıcı
Giriş yaparken onları "yasaklı" olmasıdır
için basitleştirilebilir, ancak kullanıcı oturum açma özelliği için çalışıyorum, ancak inactive_message "Hesabınız şu anda askıya alındı", şimdi de kullanıcı kayıtlarında görüntülenir. Yeni hesap aktivasyonu ve kullanıcı askıya alınması için farklı etkin olmayan mesajlar alabilir miyim? – Dercni
http://kiprosh.com/blog/customizing-devise-authentication-to-disable-or-enable-user-authentication – Dercni
Bu, geçerli bir sorudur ve yeniden açılması gerektiğini -. OP ben belirli kullanıcıları yasaklamak nasıl" istiyor "[devise] 'i kullanarak imzalamaktan (https://github.com/plataformatec/devise). – Zabba