2010-03-17 16 views
12

¿Cómo puedo reemplazar/authlogic configurado para utilizar el campo de correo electrónico en lugar del campo nombre de usuario tanto para registro y autenticación, que tiene un nombre de usuario + un correo electrónico es en ocasiones demasiado intenso para algunos algunos escenarios de registrocorreo electrónico authlogic como nombre de usuario

Respuesta

11

Si simplemente elimine la columna login y agregue una columna email, authlogic hará el resto.

Vea este ejemplo readme para todas las columnas de DB opcionales/requeridas.

+12

magic !. También encontré usando esto también funcionó: acts_as_authentic do | c | c.login_field =: correo electrónico final – ADAM

+2

Necesito iniciar sesión con el correo electrónico, pero al por menor el nombre de usuario. Entonces prefiero la respuesta de comentario de ADAM. –

10

mejor respuesta prueba esto ... bueno, ¡actualice la gema authlogic si es necesario!

user_session.rb

class UserSession < Authlogic::Session::Base 
    find_by_login_method :find_by_email #for example or you can make what ever method see exapmle 2 
end 

--- ejemplo 2

user_session.rb

class UserSession < Authlogic::Session::Base 
    find_by_login_method :find_by_anything 
end 

user.rb

class User < ActiveRecord::Base 
    acts_as_authentic 

    def self.find_by_anything(login) 
    find_by_login(login) || find_by_email(login) || find_by_id(login) 
    end 
end 
+1

gracias por la respuesta amrnt! – ADAM

3

Como el comentario de Adam contiene una buena respuesta a esta pregunta. Agregue esto a su modelo de usuario:

class User < ActiveRecord::Base 
    acts_as_authentic do |c| c.login_field = :email end 
end 
Cuestiones relacionadas