Saya menggunakan Devise untuk otentikasi dalam aplikasi saya.
Bagaimana cara melarang pengguna tertentu masuk - semacam menonaktifkan pengguna?
ruby-on-rails
devise
Dimitar Vouldjeff
sumber
sumber
Jawaban:
Lakukan seperti ini:
Buat kolom
is_active
untukUser
model.Kemudian tambahkan kode di bawah ini ke
User
model:MEMPERBARUI
Seperti yang dicatat Matt Huggins, metode ini sekarang disebut
active_for_authentication?
( Dokumentasi )sumber
active_for_authentication?
bukan hanyaactive?
.the method is now called active_for_authentication?
berarti nama metode Anda seharusnyaactive_for_authentication?
bukanactive?
.active_for_authentication?
harus menjadi metode publik!super and self.is_active?
dapat disederhanakan menjadisuper && is_active?
Tambahkan kolom ke
User
model:allowed_to_log_in
.Kemudian tambahkan ini ke
/app/models/user.rb
:Jika Anda ingin memberi tahu pengguna dengan pesan khusus, Anda juga dapat menambahkan ini:
Saya pikir itu cukup penting karena pesan standar dari Devise mengatakan:
Hal itu membingungkan bagi pengguna dan alasan sebenarnya adalah Anda telah "melarang" mereka masuk.
sumber
Anda ingin melakukan otorisasi, bukan otentikasi. Devise hanya melakukan authetication.
Ie devise hanya memberi tahu Anda bahwa pengguna adalah yang dia katakan.
Anda membutuhkan sesuatu yang lain untuk melarang dia menggunakan situs ini.
Otorisasi adalah topik yang populer dan ada daftar lengkap permata yang dapat membantu Anda:
http://ruby-toolbox.com/categories/rails_authorization.html
Silakan pilih.
sumber
Sepertinya Anda tertarik dengan cancan
sumber