gpt4 book ai didi

ruby-on-rails-3 - 我需要直接在 Devise 下的控制台中对用户进行身份验证。我该怎么做?

转载 作者:行者123 更新时间:2023-12-03 21:16:03 24 4
gpt4 key购买 nike

我需要从 Rails 控制台做这样的事情来做一些测试和实验:

User.authenticate(username, password)



我正在使用 Devise,但我不知道如何做到这一点。

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

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

但我需要更干净、更直接的东西。如有必要,我只需要该算法用盐散列尝试的密码并将其与 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

也在工作: 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

作为引用,这是我的用户模型的设计设置:
class User < ActiveRecord::Base`

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

{...}

end

就像你在评论中所说的,没有 sessions_controller自从设计。查看 /config/initializers/devise.rb 中的设计配置文件.根据您的应用程序配置,您可能还想查看 token.rbsession_store.rb初始化配置。

编辑:您能否检查您的用户模型以查看是否为其正确配置了设备?将它与我的 devise 进行比较线。 :validatable属性(property)可能会丢失。

编辑 2:如果您想在控制台之外执行此测试,则添加了辅助方法来执行此测试。检查顶部。

旁注: rails_admin gem非常有用,值得一试!

希望有帮助。

关于ruby-on-rails-3 - 我需要直接在 Devise 下的控制台中对用户进行身份验证。我该怎么做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6724494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com