dan*_*dan 14 devise ruby-on-rails-3
我需要从Rails控制台做一些这样的事情来做一些测试和实验:
User.authenticate(用户名,密码)
我正在使用Devise,但我不知道该怎么做.
我在这里看到了另一个答案
但我需要更清洁,更直接的东西.如果有必要,我只需要算法使用salt散列尝试的密码并将其与encryped_password进行比较.
是这个吗?
User.find(1).valid_password?('password123')
Run Code Online (Sandbox Code Playgroud)
Sin*_*lel 25
例如,这是一个可以用来执行此测试的辅助方法:
class User
def self.authenticate(username, password)
user = User.find_for_authentication(:username => username)
user.valid_password?(password) ? user : nil
end
end
Run Code Online (Sandbox Code Playgroud)
测试它,我得到:
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
Run Code Online (Sandbox Code Playgroud)
还在工作:User.find(1).valid_password?('1')在Rails控制台中:
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
Run Code Online (Sandbox Code Playgroud)
作为参考,这是我的用户模型的Devise设置:
class User < ActiveRecord::Base`
devise :database_authenticatable, :registerable, :timeoutable, :recoverable, :rememberable, :trackable, :validatable
{...}
end
Run Code Online (Sandbox Code Playgroud)
就像你在评论中说的那样,sessions_controller自设计之后就没有了.查看Devise配置文件/config/initializers/devise.rb.根据您的应用程序配置,您可能还需要查看token.rb和session_store.rb初始化程序配置.
编辑:您可以检查您的用户模型,看看是否正确配置了设备?将它与我的devise线对比.该:validatable物业可能遗失.
编辑2:如果您想在控制台之外执行此操作,请添加辅助方法来执行此测试.检查顶部.
旁注:rails_admin宝石非常有用,可能值得一试!
希望有所帮助.
我认为没有使用任何类型的宝石,工具可以更简单.至少我们知道电子邮件ID.
电子邮件:'currentuser@email.com'当前密码:'rubyuser'
user = User.find_by_email('currentuser@email.com')
user.valid_password?('wrong_password') #returns false
user.valid_password?('rubyuser') #returns true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10092 次 |
| 最近记录: |