ruby-on-rails-3 – 我需要在Devise的控制台中直接验证用户.我该怎么做?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails-3 – 我需要在Devise的控制台中直接验证用户.我该怎么做?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要这样做从Rails控制台做一些测试和实验:

User.authenticate(username,password)

我正在使用Devise,但是我不知道该怎么做.

我在这里看到了另外一个答案

How to sign in a user using Devise from a Rails console?

但我需要更清洁和更直接的东西.如果需要,我只需要使用算法将尝试的密码与salt进行哈希,并将其与encryped_pa​​ssword进行比较.

这是吗

User.find(1).valid_password?('password123')

解决方法

基本信息:

查看Devise README found here.

举个例子,这里是一个帮助程序,你可以用来做这个测试:

class User
    def self.authenticate(username,password)
        user = User.find_for_authentication(:username => username)
        user.valid_password?(password) ? user : nil
    end
end

测试它,我得到:

1.9.3p194 :001 > user = User.find(1)
    User Load (0.2ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
    User id: 1,{...USER DETAILS SHOWN HERE...}
1.9.3p194 :002 > user.valid_password?('is this it?')=> false

还工作:Rails控制台中的User.find(1).valid_password?(‘1’)

1.9.3p194 :011 > User.find(1).valid_password?('1')
    User Load (0.3ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
    => false

作为参考,这里是我的Devise设置的用户模型:

class User < ActiveRecord::Base`

  devise :database_authenticatable,:registerable,:timeoutable,:recoverable,:rememberable,:trackable,:validatable

  {...}

end

就像你在评论中说的那样,自Devise以来没有session_controller.查看/config/initializers/devise.rb中的Devise配置文件.根据您的应用程序配置,您可能还需要查看token.rb和session_store.rb初始化程序配置.

编辑:您可以检查您的用户模型,看看它是否正确配置了?比较我的设计线.可以丢失:可验证的属性.

编辑2:如果要在控制台外部执行此操作,则添加辅助方法进行此测试.检查顶部.

旁注:@L_502_2@是非常有用的,可能值得一试!

希望有帮助.

猜你在找的Ruby相关文章