Estoy usando Devise para autenticación en mi aplicación.Devise - ¿Cómo prohíbo que ciertos usuarios inicien sesión?
¿Cómo prohíbo que ciertos usuarios inicien sesión? ¿Qué tipo de deshabilitar a un usuario?
Estoy usando Devise para autenticación en mi aplicación.Devise - ¿Cómo prohíbo que ciertos usuarios inicien sesión?
¿Cómo prohíbo que ciertos usuarios inicien sesión? ¿Qué tipo de deshabilitar a un usuario?
hacerlo de esta manera:
Crear una columna llamada is_active
para el modelo User
.
A continuación, añada el siguiente código para el modelo User
:
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
ACTUALIZACIÓN
Como señala Matt Huggins, el método se llama ahora active_for_authentication?
(Documentation)
gracias! eso es lo que he necesitado –
Parece que esto ha cambiado de nombre a 'active_for_authentication?' En lugar de 'active?'. –
¡Gracias por la actualización! –
Quiere hacer la autorización, no la autenticación. Sin embargo, idear solo hace authetication.
I.e. el dispositivo solo te dice que un usuario es quien dice ser.
Necesita algo más para prohibirle el uso del sitio.
autorización es un tema popular y hay toda una lista de las gemas que pueden ayudarle con ella:
http://ruby-toolbox.com/categories/rails_authorization.html
una serie de opciones.
Sé la diferencia. El caso es que quiero prohibir al usuario que inicie sesión, que no acceda a cierto controlador. –
suena como usted puede estar interesado en cancán
Esta no es una respuesta a la pregunta. La mayoría de las personas conoce la diferencia entre autorización y autenticación. La pregunta era cómo lo hace para que un usuario no pueda iniciar sesión. – isaacsloan
Añadir una columna a el modelo User
: allowed_to_log_in
.
A continuación, añadir esto a /app/models/user.rb
:
def active_for_authentication?
super and self.allowed_to_log_in?
end
Si desea informar al usuario con un mensaje personalizado puede añadir esta así:
def inactive_message
"You are not allowed to log in."
end
Creo que es muy importante porque el mensaje estándar de Devise dice:
"Su cuenta no está activada todavía."
que es confusa para los usuarios y la verdadera razón es que se ha "prohibido" de ellos de la tala en
Estoy implementando una función de suspensión de usuario que funciona sin embargo el mensaje inactive "Su cuenta está actualmente suspendida" se muestra para los registros de usuario también. ¿Puedo tener diferentes mensajes inactivos para la activación de la nueva cuenta y la suspensión del usuario? – Dercni
http://kiprosh.com/blog/customizing-devise-authentication-to-disable-or-enable-user-authentication – Dercni
Esta es una pregunta válida y se vuelva a abrir -. OP está pidiendo "¿Cómo me prohíbo ciertos usuarios de iniciar sesión en "using [idear] (https://github.com/plataformatec/devise). – Zabba