ruby 只有在用户帐户被锁定时,是否有方法显示设备“可锁定”链接?

eqqqjvef  于 2023-05-06  发布在  Ruby
关注(0)|答案(2)|浏览(183)

我在Rails 4.2.0应用程序中使用Devise进行用户身份验证。
下面是app/views/devise/shared/_links.html.slim中的相关代码:

- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?
(:email) && controller_name != 'unlocks'
= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name)

目前,它显示在我的注册/登录页面的链接,因为我有适当的设计Map到位。
我想做的是隐藏这个链接,只有当用户输入了足够多的失败密码来锁定他们的帐户时才显示它(3)。
失败尝试的次数是否存储在会话变量中?
任何建议/指导都很感激-谢谢你的时间。

yeotifhr

yeotifhr1#

失败尝试的次数存储在设备模型中(例如,User):

## Lockable
# t.integer  :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
# t.datetime :locked_at

locked_at表示何时;当它们不再锁上的时候,它就被清空了。

brqmpdu1

brqmpdu12#

您可以查看Flash对象(ActionDispatch::Flash::FlashHash)是否有警报“您的帐户已锁定”。使用消息密钥I18n.t('devise.failure. locked'):

# app/views/devise/shared/_links.html.erb
...
<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks'  +%>
  <% if flash.detect { |key, value| key == 'alert' && value == I18n.t('devise.failure.locked') }.present? %>
    <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %><br />
  <% end %>
<% end %>

相关问题