2011-09-17 14 views
16

Cada vez que inicio sesión, recibo el mensaje de error de que el correo electrónico/contraseña no es válido.RoR delinear: sign_in siempre devuelve correo electrónico/contraseña no válida

rutas: modelo

devise_for :users 

devise_scope :users do 
    get '/users/sign_out' => 'devise/sessions#destroy', :as => :destroy_user_session 
    post '/users/sign_in' => 'devise/sessions#create', :as => :user_session 
end 

resources :users 

usuario:

devise :database_authenticatable, :confirmable, :recoverable, :rememberable, :trackable 

attr_accessor :password 
attr_accessible :first_name, :last_name, :email, :password, :password_confirmation, :gender, :remember_me 

vista:

<% if signed_in?(:user) %> 
    Hi <%= current_user.first_name %>. | Not you? <%= link_to 'Sign out', destroy_user_session_path, :method => :delete %> 
<% else %> 
    <%= link_to 'Sign up', signup_path %> or <%= link_to 'Sign in', user_session_path, :method => :create %> 
<% end %> 

I intentado cambiar las rutas a:

get '/users/sign_in' => 'devise/sessions#new', :as => :new_user_session 

y cambiando las rutas respectivas, pero eso no cambió nada.

Incluso me cambiaron el código en la vista desde:

if signed_in?(:user) 

a:

if user_signed_in? 

e hicieron una combinación de estas cosas y nada funciona.

Pedí también que me encargara de la confirmación, lo que hice copiando el enlace generado al navegador y me firmó como usuario la primera vez. También me permite cambiar la contraseña a través del enlace de confirmación de correo electrónico, que también me registra al cambiar la contraseña. Pero una vez que me desconecto y vuelvo a iniciar sesión, me dice que el correo electrónico/contraseña no es válido nuevamente.

¿Alguien puede ayudar?

Estoy usando rails 3.0.7, idee 1.4.5, capybara 1.1.1, pepino 1.0.6, mysql2 0.2.6 y rastrillo 0.8.7 si eso ayuda a alguien.

Gracias

EDIT:

Para ayudar a los futuros usuarios, en realidad hay nada malo con la joya. Funciona bien. El problema es con mi base de datos. Por alguna razón, es seleccionar un correo electrónico NULL de la base de datos en lugar de extraer la información del usuario que estoy tratando de iniciar sesión. Estoy averiguando cómo arreglar esto ahora y lo actualizaré una vez que lo encuentre.

+0

Mi problema se resolvió cuando reinicié el servidor después de ejecutar las migraciones. Por algún motivo, el servidor almacenaba en caché algo y no aceptaba las credenciales. – Chloe

Respuesta

7

He tenido un problema similar en una instalación nueva de Diseñar, pero lo que he encontrado es que si corría bundle update se reinicie mi servidor dev funciona.

Al principio no estaba viendo la consulta DB en el development.log, pero una vez que actualicé mi Gemfile (para asegurarse de que estoy usando la última joya Devise) y reiniciar el servidor ahora veo las consultas db en mi archivo de registro y funciona (mágicamente).

Espero que ayude.

Por cierto, no estoy seguro si esto le ayudará a ... pero estas son las rutas en mi Routes.rb

devise_for :users, :path_names => { :sign_up => "register", 
             :sign_in => "login", 
             :sign_out => "logout", 
             :settings => "settings" } 

    devise_scope :user do 
    get "login", :to => "devise/sessions#new" 
    get "register", :to => "devise/registrations#new" 
    get "settings", :to => "devise/registrations#edit" 
    get "logout", :to => "devise/sessions#destroy" 

    end 
+0

Gracias marcamillion. Esto será útil cuando empiece una nueva aplicación y use la gema nuevamente. Al principio me cansé tanto que simplemente fui y construí esto desde el principio. No estoy seguro de si intenté actualizar el paquete, por lo que no estoy seguro de si eso hubiera solucionado mi problema. Me alegro de que no soy la única persona con el problema :) – noob

+1

Tenía el mismo problema y esto lo solucionó. ¡Gracias! La actualización del paquete no me cambió nada, así que creo que el reinicio del servidor era todo lo que necesitaba. Lo extraño es que pude registrar un nuevo usuario muy bien –

+0

Supongo que es apropiado aprender a reiniciar el servidor de una vez y luego ... no es la primera vez que tengo problemas porque no reinicié el servidor después de hacer algo que aparentemente requirió eso. – Rebirth

0

El nombre de usuario y la contraseña pueden ser sensibles a mayúsculas y minúsculas. ¿Has comprobado cómo se almacena el nombre de usuario en tu mesa para asegurarte de que la estás ingresando correctamente?

En mi experiencia cuando te dice que el correo electrónico/contraseña es incorrecto, puedes distraerte con muchas ideas complicadas, pero termina siendo el correo electrónico o la contraseña incorrecta. Parece que lo has intentado varias veces al restablecer la contraseña, por lo que me pregunto sobre el nombre de usuario. ¿Estás seguro de que el campo derecho está configurado como el nombre de usuario (es decir, podría ser un correo electrónico o un nombre de usuario)?

+0

sí, lo he comprobado varias veces. Estoy desconcertado. Voy a reinstalarlo de nuevo. – noob

+0

intenté desinstalarlo y volverlo a instalar y todavía no funciona. ¿Se pregunta si es solo un error, pero nadie más parece tener este problema? – noob

1

creo que los attr_accessor líos con attr_accessible. ¿Realmente necesitas tener un attr_accessor ?, si no es que simplemente eliminarlo.

Pruébalo y por favor, házmelo saber cómo va.

Saludos

ED

+0

Esto resultó ser un problema de mysql. Pero en cualquier caso, debe agregar attr_accessor para: contraseña, ya que no se guarda en la base de datos por razones de seguridad – noob

+2

@ming ¿Cuál fue su problema con mysql? Creo que tengo el mismo problema ... –

+0

El modelo de usuario no funcionó de la caja, tuve que agregar attr_accessor para: correo electrónico para deshacerme del error, de lo contrario, siempre se quejaba del usuario que ya estaba en db mientras que no lo era. Esto me puso en el camino correcto. – ilmirons

5

Cuando me encontré con este problema Volví a través de mi archivo de configuración Diseñar en

config/inicializadores/devise.rb

entonces encontré la parte que recordaba que había cambiado a: Nombre de usuario

config.authentication_keys = [ :username ] 

Lo cambié a :email. Eso terminó haciéndolo funcionar.

8

me encontré con este problema cuando tuve tanto

config.authentication_keys = [ :username ] 

y

config.authentication_keys = [ :email ] 

activado simultáneamente en config/inicializadores/devise.rb.


Tras la eliminación de la configuración duplicada, la autenticación se ha realizado correctamente.

+0

Tuve el mismo problema, solo que no tenía authentication_keys en mi devise.rb – khebbie

0

config.authentication_keys = [nombre de usuario]:

y

config.authentication_keys = [: correo]

simultáneamente establecer en config/inicializadores/devise.rb causarán este error.

Cuestiones relacionadas