我需要这样做从Rails控制台做一些测试和实验:
User.authenticate(username,password)
我正在使用Devise,但是我不知道该怎么做.
我在这里看到了另外一个答案
How to sign in a user using Devise from a Rails console?
但我需要更清洁和更直接的东西.如果需要,我只需要使用算法将尝试的密码与salt进行哈希,并将其与encryped_password进行比较.
这是吗
User.find(1).valid_password?('password123')
解决方法
基本信息:
举个例子,这里是一个帮助程序,你可以用来做这个测试:
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@是非常有用的,可能值得一试!
希望有帮助.