设备无法找到_for_authentication

问题描述 投票:0回答:1

从 Rails 7.1.4 升级到 7.2.1 的用户无法再登录。奇怪的是,这似乎只影响开发模式。该问题似乎是在会话控制器调用时引起的:

resource = warden.authenticate!(auth_options)

...它将调用 User.rb 中的以下方法之一:

# Implement the requirement to supply username or email to login.
def self.find_for_database_authentication(warden_conditions)
  conditions = warden_conditions.dup
  login = conditions[:login]
  where(['lower(username) = :value OR lower(email) = :value', { value: login.downcase.strip }]).first if login
end

# Authenticate user by means of a JSON Web token.
def self.find_for_jwt_authentication(warden_conditions)
  conditions = warden_conditions.dup
  where('id = ?', conditions.to_i).first
end

我分别收到以下错误:

NoMethodError (undefined method `name' for "knirirr":String):

NoMethodError (undefined method `name' for "123":Integer):

我一直在研究设计和守望者宝石的代码,但没有发现任何东西。 config/environments/development.rb 中也没有任何明显的内容,我无法使用新创建的 Rails 应用程序重现此内容。

任何人都可以建议这背后可能是什么,或者去哪里寻找?

这是使用:

  • 红宝石3.2.2
  • Rails 7.2.1
  • 设计4.9.4
devise
1个回答
0
投票

升级到最新版本(7.2.2 IIRC)后此问题消失;大概是在其中一颗也已升级的宝石中。

© www.soinside.com 2019 - 2024. All rights reserved.