Ruby on rails 轨道&x2B;设计:自定义登录失败闪存消息?

Ruby on rails 轨道&x2B;设计:自定义登录失败闪存消息?,ruby-on-rails,Ruby On Rails,我正在尝试在用户无法登录时显示flash警报。但是,将有两种不同的情况: 用户输入的电子邮件存在,但密码错误。我希望此消息显示:您输入的电子邮件地址或密码不正确。 用户输入的电子邮件不存在。我希望此消息显示:您输入的电子邮件地址和密码与我们的记录不匹配。(您提供了#{params[:email]}) 在路径中,是否有一个类似于签名后的钩子,我可以根据这些条件修改flash 更新 所以我找到了这个。但是如何仅为数据库中未找到的传入电子邮件变量 en: devise: failure:

我正在尝试在用户无法登录时显示flash警报。但是,将有两种不同的情况:

  • 用户输入的电子邮件存在,但密码错误。我希望此消息显示:
    您输入的电子邮件地址或密码不正确。

  • 用户输入的电子邮件不存在。我希望此消息显示:
    您输入的电子邮件地址和密码与我们的记录不匹配。(您提供了#{params[:email]})

  • 在路径中,是否有一个类似于签名后的钩子,我可以根据这些条件修改flash

    更新

    所以我找到了这个。但是如何仅为数据库中未找到的
    传入电子邮件变量

    en:
      devise:
        failure:
          already_authenticated: "You are already signed in."
          invalid: "The email address or password you entered is incorrect."
          not_found_in_database: "The email address and password you entered do not match our records. (You provided <span class='black'>%{email}</span>)<br/><br/><a href='/accounts/forgot_password' class='decorate'>Having trouble accessing your account?</a>."
    
    en:
    设计:
    失败:
    已通过身份验证:“您已登录。”
    无效:“您输入的电子邮件地址或密码不正确。”
    在数据库中未找到:“您输入的电子邮件地址和密码与我们的记录不匹配。(您提供了%{email})

    。”
    我不建议您区分这两种情况。如果您提供此信息,则可以从您的页面中挖掘电子邮件地址。他们只需要用随机地址和伪密码轰炸你的系统,最终他们会找到一些有效的电子邮件。如果是一个小页面,那没什么大不了的,但是最好避免这个问题。

    我最终使用了这个:

    这是:

                    <% if !flash[:alert].blank? %>
                        <% if flash[:alert][/The email address and password you entered do not match our records/] %>
                            <div class="flashNotice col last">
                                <%= t('devise.failure.not_found_in_database', resource_name: "#{params[:user][:email]}").html_safe %>
                            </div>
                        <% else %>
                        <!-- Style for any warning message -->
                            <div class="flashNotice col last"><%= flash[:alert]%></div>
                        <% end %>
                    <% end %>
    
    
    
    通常情况下,即使在偏执狂模式下,designe默认情况下也会在创建帐户时泄漏此信息(防止重复的电子邮件地址注册)。尽可能从注册表单中挖掘电子邮件地址。因此,这样做并不会真正失去任何真正的安全性,除非你也阻止了泄漏。你能将消息与密码和电子邮件分开吗。。所以,这对双方都是一个不同的信息?我在寻找相同的东西。初始的failure.invalid和failure.not_found_在_数据库中有相同的消息(因此我在登录页面上看到相同的失败消息),这使我认为Deave无法区分这两种情况。