【问题标题】:How do I prevent auto complete “Use password for:” option in chrome?如何防止自动完成 Chrome 中的“使用密码:”选项?
【发布时间】:2017-05-12 09:43:33
【问题描述】:

我正在使用 primefaces 做一个项目。

因为我正在使用用户登录页面。

我的问题是,当我点击密码文本框 (p:inputText) 时,先前保存的密码值的建议会出现在 p:inputText 上。

我在 p:inputText 中尝试了 autocomplete=“off”,并且在每次登录时都清除了 Chrome 浏览器历史记录,但仍然无法正常工作。 在我使用 autocomplete="new-password" 之前,它工作正常并且没有显示建议。 但是现在 Chrome 版本已更新到 58.0.3029.96 所以,在最新版本的 chrome 中它无法正常工作。

有什么想法吗?

【问题讨论】:

    标签: google-chrome primefaces


    【解决方案1】:

    您应该使用 p:password 输入密码,而不是 p:inputText。 p:password 呈现 HTML 输入 type="password",这使得浏览器在安全方面正确对待它。浏览器永远不会将密码自动填充到非密码字段中。但是如果你使用基本的 inputText,那么浏览器就不会知道它是一个密码。

    【讨论】:

    • 但它没有以纯文本形式显示密码,这是重要的部分。如果您想完全阻止密码建议,那将很难。没有办法可靠地做到这一点,所有浏览器都会忽略当前禁用自动保存的尝试。 PrimeFaces 在这里帮不了你,你需要用纯 HTML/JS 做一些诡计。例如。查看stackoverflow.com/q/2530/1341535的许多答案
    • 几篇有用的文章:dolske.wordpress.com/2013/08 - Firefox 密码管理器的工作原理。我认为它有点过时了,但它应该让你知道你要面对什么。
    【解决方案2】:

    我在使用 Safari 和 p:autoComplete PrimeFaces 5.0 时遇到了同样的问题。我的解决方案是在焦点上用空格(非空,非空白)作为前缀值,然后在模糊处修剪空间:

    <p:autoComplete value="#{inputBean.operator}"... onfocus="this.value = ' ' + this.value;" onblur="this.value = this.value.trim();" onchange="this.value = this.value.trim();"/>

    它对我有用。空间对于用户来说几乎是不明显的。唯一的问题是有时不会触发 onblur(),我不知道为什么,所以我包含 onchange() 以确保修剪值。

    我尝试将此技术与p:password 一起使用:

    <p:password value="#{loginBean.password}" ... onfocus="this.value = ' ' + this.value;" onblur="this.value = this.value.trim();"

    虽然它有效,但它可能会在用户开始写作之前发现一个点 (•),但它确实会阻止浏览器自动完成。正常的用户反应是删除那个点并输入她/他的密码;如果用户没有删除点,onblur() 会删除。

    【讨论】:

    • 您的答案与p:autoComplete 组件有关,而问题和现有答案与p:password 字段中的自动完成有关,因此您的答案与问题无关。
    • 那为什么不改变答案并在里面放一个p:password呢?
    • 谢谢@onClick....但是当我们删除那个空间,即点(•)时,它会再次显示所有存储密码(用户名)的建议,用户仍然可以选择用户名。一旦他选择了用户名,密码也会出现在输入字段中。
    猜你喜欢
    • 2015-06-30
    • 1970-01-01
    • 2022-08-10
    • 1970-01-01
    • 2019-03-21
    • 2010-10-15
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多