注销和页面过期的浏览器信息

时间:2013-09-08 22:46:40

标签: jsf jsf-2 viewexpiredexception

我是Java EE和JSF的新手。我正在尝试创建登录系统,但是当用户注销时我的后退按钮有问题。为了解决这个问题,我在stackoverflow中找到的其他一些主题中创建了一个过滤器,它看起来像这样:

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletResponse hsr = (HttpServletResponse) res;
    hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
    hsr.setHeader("Pragma", "no-cache");
    hsr.setDateHeader("Expires", 0);
    chain.doFilter(req, res);
}

现在页面没有缓存。在每个页面上称为authenticate函数,如下所示:

public void authenticate(ComponentSystemEvent event) {
        if(!userName.equals("Admin")) {
            FacesContext context = FacesContext.getCurrentInstance();
            ConfigurableNavigationHandler navHandler = (ConfigurableNavigationHandler) 
                    context.getApplication().getNavigationHandler();
            navHandler.performNavigation("/root/start");
        }
}

因此,当管理员未登录时,应用程序会将我重定向到登录页面(现在只有一个名为admin的用户才能使用它。)

问题是当管理员退出并使用后退按钮时,有一个浏览器特定的网页,其中包含有关过期网页的信息,目前有2种情况:

1)用户登录后,当他点击刷新时,页面正常显示。

2)用户注销,当他点击刷新或再次使用后退按钮时会抛出 javax.faces.application.ViewExpiredException ,然后用户将被重定向到登录页面(/ root /开始 - 我在我的web.xml中配置它。)

我想要做的就是跳过有关过期网页的浏览器信息 - 注销用户必须在使用后退按钮后立即重定向到登录页面,并且登录用户可以正常使用后退按钮而不会被警告过期页面。 begginier可以实现的任何解决方案(如果存在)?

0 个答案:

没有答案