首页 > 解决方案 > 不允许在 JavaScript 中的 eyeIcon 上显示保存的密码

问题描述

在我的 Rails 应用程序中,我有注册表单,用户可以在单击眼睛图标时显示他的密码。

问题是,如果没有直接输入或根本没有输入,我不想允许在编辑页面中显示保存的密码(从浏览器的钥匙串中保存的密码)。在这种情况下是否可以禁用此功能?

eyeIcon.click(function(evt) {
  var eye = $(this),
      field = eye.closest(":has(div)").find('.vr-textfield'),
      isInTextMode = field.attr('type') == 'text';

  // update field and icon view

  if (!isInTextMode) {
    field.attr('type', 'text');
    eye.attr('src', eyeIconSrc.active);
  }
  else {
    field.attr('type', 'password');
    eye.attr('src', eyeIconSrc.inactive);
  }
});

编辑

更明确一点:用户(或他们最大的敌人)可以自由地从浏览器的钥匙串中恢复以前保存的密码,然后单击眼睛按钮,他们可以看到纯密码,暴露了一个漏洞,特别是如果他们使用相同的密码一切 - 请看这里

我想允许用户eyeIcon仅在直接从浏览器中输入密码时才显示他的密码,并且不允许在上面的链接中提供密码时使用。

标签: javascriptruby-on-rails

解决方案


很酷的问题,谢谢。专门解决通过眼睛图标操作使密码输入字段纯文本可见的问题,您是否考虑过在不合适时不渲染眼睛图标(以及您显示的相关 JS)?

该策略需要对您的视图进行一些调整,特别是如果您使用部分表单进行创建(您想要的行为)和编辑(您不想要的地方)。

一种方法是将条件逻辑放在部分中。另一种是将表单部分分解为重复使用的部分,并渲染不同的部分(重复使用部分)以进行创建和编辑。

这有帮助吗?


推荐阅读