禁用浏览器密码保存重定向

时间:2015-04-16 14:10:16

标签: jsf browser primefaces jsf-2.2

我正在尝试跳过浏览器提示以保存登录表单的密码。

我已经检查了this question,并添加了autocomplete =" off"属性(在表单和字段上)。

只需导航到另一个页面即可。但是当我使用?faces-redirect=true时(在我的主页按钮中),我会收到提示。

admin.xhtml:

<h:form id="form" autocomplete="off">
    <p:growl id="growl" showDetail="true" sticky="false" life="3000" />  
    <p:layout fullPage="true">          
        <p:layoutUnit position="center" >
            <p:panel id="loginPanel" visible="#{not admin.loggedIn}">
                <h:panelGrid columns="2" cellpadding="5">
                    <f:facet name="header">
                        <h:outputLabel value="Administration" />
                    </f:facet>  

                    <h:outputLabel for="username" value="Username:" />
                    <p:inputText id="username" value="#{admin.username}" required="true" autocomplete="off" label="username" />

                    <h:outputLabel for="password" value="Password:" />
                    <p:password id="password" value="#{admin.password}" required="true" autocomplete="off" label="password" />

                    <f:facet name="footer">
                        <p:commandButton value="Login" update="growl loginPanel logoutPanel" 
                        process="loginPanel" actionListener="#{admin.login}" />
                    </f:facet>  
                </h:panelGrid>
            </p:panel>
        </p:layoutUnit>     
        <p:layoutUnit position="north" size="85">
            <p:panel id="logoutPanel">
                <p:commandButton value="Home" process="@this" 
                action="#{menuBean.goHome}" actionListener="#{admin.logout}" />
                <p:commandButton  rendered="#{admin.loggedIn}"
                value="Logout" update="loginPanel logoutPanel" 
                process="@this" actionListener="#{admin.logout}" />
            </p:panel>
        </p:layoutUnit>
    </p:layout>
</h:form>

MenuBean使用:

public String goHome() {
    String goToPage = "home.xhtml?faces-redirect=true";
    return goToPage;
}

有什么方法可以解决这个问题吗?

更新我使用的是JSF 2.2.0和Primaces 5.1。问题出现在Chrome 42.0上,我将测试并更新其他浏览器。

更新2 似乎可以正常使用IE 8 我尝试了passthrough属性,(我可以在生成的源代码中看到autocomplete=off),但行为是相同的。

 <html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:h="http://xmlns.jcp.org/jsf/html"
  xmlns:a="http://xmlns.jcp.org/jsf/passthrough"
  xmlns:p="http://primefaces.org/ui">
    <h:form id="form" a:autocomplete="off">

更新3 我尝试通过以下方式禁用缓存:

admin.xhtml 添加了元标记:

 <h:head>  
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="0" />
    <title>Administration</title>   

添加了this response所示的NoCacheFilter。 HTTP标头已正确更新:

Chrome Developer Tools

当我在Chrome中重定向到 home.xhtml 时,我会收到提示。

0 个答案:

没有答案