我正在使用带登录凭据的Devise :电子邮件/密码-没有用户名
我刚刚注意到,登录过程对电子邮件是区分大小写的。所以,如果你用bob@apPle.com注册,然后尝试用Bob@apple.com登录,你会得到一个错误。非常令人困惑。
如何让devise用户使用他们的电子邮件/密码登录,并且电子邮件不区分大小写?
发布于 2010-11-11 03:20:50
一种选择是覆盖devise使用的find方法。类似于:
# User.rb
before_save do
self.email.downcase! if self.email
end
def self.find_for_authentication(conditions)
conditions[:email].downcase!
super(conditions)
end
发布于 2011-09-06 11:37:56
你可以像下面这样很容易地解决这个问题。
# config/initializers/devise.rb
Devise.setup do |config|
config.case_insensitive_keys = [:email, :username]
end
发布于 2010-12-22 08:18:40
我将此代码添加到我的用户模型中,以便将其存储为区分大小写,但在登录时将其设置为不区分大小写:
def self.find_for_database_authentication(conditions = {})
self.where("LOWER(email) = LOWER(?)", conditions[:email]).first || super
end
它在Heroku上有效。
顺便说一句,这只是一个临时修复,因为问题已经解决了,这将是Devise 1.2的默认行为。详情请参见this pull request。
https://stackoverflow.com/questions/4148133
复制相似问题