如何防止在Chrome中自动完成“使用密码:”选项?

时间:2017-05-12 09:43:33

标签: google-chrome primefaces

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

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

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我遇到了与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()会这样做。