按下RequestScoped后,JSF重置后台bean

时间:2013-10-03 08:01:54

标签: jsf-2 primefaces

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

感谢。

2 个答案:

答案 0 :(得分:1)

您需要关闭浏览器的自动完成功能。这是使用表单输入中的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>

查看this

答案 1 :(得分:0)

首先,您应该使用过滤器来提高安全性。在您的过滤器中,您可以设置回复的标头。这将处理您的安全问题。一个简单的实现就是这样:

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() {
}
 }