2009-09-25 63 views
2

我正在尝试实施Authlogic。注册是好的,它进入所有必要的细节到我的数据库..Ruby on Rails Authlogic密码无效

..但是当我尝试登录,它给我的错误:

1 error prohibited this user session from being saved

There were problems with the following fields:

Password is not valid

我的密码有效。我不确定发生了什么事。有任何想法吗?

+1

这听起来很熟悉,但我的记忆没有震动......也许你可以发布你的迁移和控制器/模型/视图登录? – SingleShot 2009-09-25 02:40:11

+0

我第二次SingleShot的声明。 – khelll 2009-09-25 04:12:14

+0

是什么让你确定你的密码是有效的?显然不是。也就是说,一些验证是添加错误。例如,您是否知道authlogic中的内置默认验证? – 2009-09-25 10:22:40

回答

4

我有同样的问题,那是因为我是从宁静的验证迁移。 问题是: Restful认证将40个字符的上限放在密码盐和密码密码上。 由authlogic生成的哈希大于那个。

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 

在罚款手册中找到了这个答案。

the fine manual

+0

美丽!我挣扎了好几个小时!谢谢 :) – Gazza 2010-07-15 12:27:19

1

在你的用户模型,试试这个:

class User < ActiveRecord::Base 

    acts_as_authentic do |c| 
    c.validate_password_field = false 
    end 

end 

然后再次尝试登录。如果这有效,那么你会知道authlogic的默认验证会让你失望。

您也可以尝试

valid_password?(attempted_password, check_against_database = check_passwords_against_database?) 

与控制台

0

我得到了同样的错误,我的问题是,我没有用,我以前用宁静的身份验证使用的REST_AUTH_SITE_KEY键值。

我添加键值,一切工作:)

0

如果升级到authlogic默认crypto_provider已从Sha512变更为SCrypt所以它可能是密码被破的情况下。看看authlogic readme