【发布时间】:2012-01-20 05:49:37
【问题描述】:
我有一个使用 JSF 2.0 制作的简单登录页面。通常在每个登录页面中,Web 浏览器都会建议用户为其用户名保存密码。
我在 Oracle 的网站上看到用户必须进行身份验证,当我输入我的用户名和密码时,浏览器不会询问我是否要保存我的用户名和密码。也许有一种方法可以从登录页面的代码中禁用它。
这可能吗?
【问题讨论】:
我有一个使用 JSF 2.0 制作的简单登录页面。通常在每个登录页面中,Web 浏览器都会建议用户为其用户名保存密码。
我在 Oracle 的网站上看到用户必须进行身份验证,当我输入我的用户名和密码时,浏览器不会询问我是否要保存我的用户名和密码。也许有一种方法可以从登录页面的代码中禁用它。
这可能吗?
【问题讨论】:
您基本上需要将autocomplete="off" 属性添加到HTML <form> 元素。但是,<h:form> 不支持此属性。它仅在单个 <h:inputText> 和 <h:inputSecret> 组件上受支持。
所以,应该这样做:
<h:form>
<h:inputText value="#{auth.username}" required="true" autocomplete="off" />
<h:inputSecret value="#{auth.password}" required="true" autocomplete="off" />
<h:commandButton value="Login" action="#{auth.login}" />
<h:messages />
</h:form>
<h:form> 上的新 autocomplete 属性计划用于 JSF 2.2。另见JSF spec issue 418。
或者,如果您使用带有j_security_check 的容器管理登录,无论如何都需要一个普通的HTML <form>,那么只需将其添加到那里:
<form action="j_security_check" method="post" autocomplete="off">
<input type="text" name="j_username" />
<input type="password" name="j_password" />
<input type="submit" value="Login" />
</form>
<h:inputText> tag documentation(提及autocomplete属性)<h:inputSecret> tag documentation(提及autocomplete属性)【讨论】:
您还可以使用 Jquery 来阻止自动完成选项。因此,我们不需要针对各个字段。
<script>
$(function(){
$("#formID").attr("autocomplete", "off");
});
</script>
【讨论】:
如果添加“自动完成”不起作用,您可以试试这个技巧。您应该在具有这种样式的真实文本之后放置一个假的“inputText”:
<p:inputText style="display: none;"/>
【讨论】: