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



我正在使用素数做一个项目。

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

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

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

知道吗?

您应该使用 p:password 进行密码输入,而不是 p:

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

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

<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()删除。

最新更新