2009-09-25 11 views
2

J'essaie de mettre en œuvre Authlogic. L'inscription est très bien, il entre dans tous les détails nécessaires dans ma base de données ..Ruby on Rails Mot de passe Authlogic non valide

.. mais quand je tente de me connecter, il me donne l'erreur:

1 error prohibited this user session from being saved

There were problems with the following fields:

Password is not valid

Mon mot de passe est valide. Je ne suis pas sûr de ce qui se passe. Des idées?

+1

Ceci me semble familier mais ma mémoire n'est pas choquée ... Peut-être que vous pouvez poster votre migration, et controller/model/view pour les logins? – SingleShot

+0

Je deuxième déclaration de SingleShot. – khelll

+0

Qu'est-ce qui vous rend si sûr que votre mot de passe est valide? Évidemment, ce n'est pas le cas. Autrement dit, certaines validations ajoutent des erreurs. Connaissez-vous les validations par défaut intégrées dans authlogic, par exemple? –

Répondre

4

J'ai eu le même problème, et c'était parce que je Migrer d'une authentification reposants. Le problème était le suivant: L'authentification reposante met une limite de 40 caractères sur mot de passe-sel et mot de passe crypté. les hachages générés par authlogic sont plus grands que cela.

class RemovePasswordSaltCap < ActiveRecord::Migration 
    def self.up 
    change_column :users, :password_salt, :string, :limit => nil 
    change_column :users, :crypted_password, :string, :limit => nil 
    end 
end 

J'ai trouvé cette réponse dans le manuel d'utilisation.

the fine manual

+0

BEAU! J'ai lutté avec ça pendant des heures !! Merci :) – Gazza

1

Dans votre modèle utilisateur, essayez ceci:

class User < ActiveRecord::Base 

    acts_as_authentic do |c| 
    c.validate_password_field = false 
    end 

end 

puis essayez de vous reconnecter. Si cela fonctionne, alors vous saurez que les validations par défaut authlogic vous ont fait trébucher.

Vous pouvez également essayer

valid_password?(attempted_password, check_against_database = check_passwords_against_database?) 

avec la console

0

Je recevais la même erreur et mon problème est que je n'utilisais pas la valeur de clé REST_AUTH_SITE_KEY que je l'ai déjà utilisé avec l'authentification reposant.

I a ajouté la valeur de clé et tout fonctionne :)

0

Si la mise à niveau authlogic la crypto_provider par défaut a changé Sha512-SCrypt il pourrait donc être un cas où les mots de passe sont cassés. Découvrez l'authlogic