Jsf 2 当按back键时JSF重置支持bean

Jsf 2 当按back键时JSF重置支持bean,jsf-2,primefaces,Jsf 2,Primefaces,我有一个简单的web应用程序,用户可以在其中创建具有角色的其他用户,出于安全目的,我想要的是,在用户(管理员角色)创建另一个用户后,它会转到欢迎页面,当用户在web浏览器中按“后退”按钮时,用户可以看到输入文本框内的所有值。当用户按下“后退”按钮时,我想重置输入文本框的值,或者当用户按下“后退”按钮时,上一页过期 谢谢 首先,为了安全起见,您应该使用过滤器。在过滤器中,可以设置响应的标题。这将是处理您的安全问题。一个简单的实现如下所示: import javax.servlet.*; impor

我有一个简单的web应用程序,用户可以在其中创建具有角色的其他用户,出于安全目的,我想要的是,在用户(管理员角色)创建另一个用户后,它会转到欢迎页面,当用户在web浏览器中按“后退”按钮时,用户可以看到输入文本框内的所有值。当用户按下“后退”按钮时,我想重置输入文本框的值,或者当用户按下“后退”按钮时,上一页过期


谢谢

首先,为了安全起见,您应该使用过滤器。在过滤器中,可以设置响应的标题。这将是处理您的安全问题。一个简单的实现如下所示:

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebFilter(urlPatterns = {"yourUrlThatWillbeProtected"})
//you should also put dispatcherTypes in webFilter
public class PageFilter implements Filter {


public void init(FilterConfig filterConfig) throws ServletException {

}


public void doFilter(ServletRequest request, ServletResponse response,
                     FilterChain chain) throws IOException, ServletException {


        //do some filtering , take user, check user, etc.

        HttpServletResponse res = (HttpServletResponse) response;
        // security of closed pages
        res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
        res.setHeader("Pragma", "no-cache"); // HTTP 1.0.
        res.setDateHeader("Expires", 0); // Proxies.
        chain.doFilter(request, response);


}

@Override
public void destroy() {
}
 }

您需要关闭浏览器的自动完成功能。在表单输入中使用
autocomplete
属性完成此操作:

<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>


看看。

如果bean是
@RequestScoped
,那么应该没有问题,因为bean只存储请求的信息。但是,您确定问题不在于浏览器提醒表单值吗?即使我的浏览器从值中缓存,它也必须在从浏览器按“后退”按钮时重置bean,或者至少给出会话过期消息。正如我所说,如果bean是请求范围,那么它的生命周期只针对一个请求。Bean值是在表单发送过程中设置的,所以当用户输入表单值时,Bean根本不会显示表单值,直到他按下submit按钮。所以按下后退按钮将撤消所有操作。是的,在提交值后,当用户按下后退按钮时,它会显示所有值,即使它不是从服务器端获取的。谢谢,它在IE 8和Firefox上工作,但在Chrome上不工作