在最近的设计版本中,该参数是否"case_insensitive_keys"验证期间将密钥小写,如果不是哪个版本修复了此问题?



使用设计4.3.0,devise.setup中的注释如下:

# Configure which authentication keys should be case-insensitive.
# These keys will be downcased upon creating or modifying a user and when used
# to authenticate or find a user. Default is :email.
config.case_insensitive_keys = [:email]

我们注意到,下降(下降(发生在模型的validate期间。在validate中出现这样的数据更改副作用是出乎意料的(在某些情况下,它会导致大小写混合的电子邮件按原样保存到数据库中(。这意味着如果跳过验证(例如(,则不应用递减

  • user.save!<--电子邮件已下移
  • user.save(validate: false)<--该电子邮件是而不是下降的
  • user.update_attribute(:email, "UPPERCASE@test.com")<--电子邮件是而不是向下的(因为update_attribute跳过验证(

我搜索过https://github.com/heartcombo/devise对于case_insensitive_keys,看看是否记录了在validate上应用降频的事实,以及在最近的版本中是否仍然如此,并且还没有发现任何内容。

参数";case_incitive_keys";在最近的设计版本中,在validate期间对密钥进行下变频,如果没有,是哪个版本修复了这一问题,现在下变频在哪个阶段完成(还有没有在Rails中不应用设计对密钥的下变频的上下文(?

在撰写本文时,遵循@engineersmnky的注释,设计在before_validation期间向下键。自2011年以来,它一直在这样做(在修复此问题之前,before_save(。

当跳过验证时,before_validation不会运行,正如其他人所指出的(例如,这里和这里(,这可能导致设计允许在数据库中重复密钥,例如电子邮件(例如,User@test.comuser@test.com(,即使配置具有config.case_insensitive_keys = [:email]

跳过验证的情况可能多于问题中列出的两种情况。这个谷歌搜索可以提供一个起点,找出哪种类型的代码会导致跳过验证。

相关内容

最新更新