如何在会话超时后将用户重定向到自定义网页?

时间:2012-12-20 09:09:42

标签: authentication servlets servlet-filters session-timeout

我想通过我的代码将用户重定向到会话超时页面。 我可以在我的过滤器中编写什么逻辑来检查会话是否已超时并将用户重定向到该自定义页面(比如CustomSessionTimeout.jsp)。此页面无需通过任何过滤。

这是第一个过滤器中一种方法的签名

public void doFilter(ServletRequest servletRequest,ServletResponse servletResponse,FilterChain filterChain)

1 个答案:

答案 0 :(得分:1)

根据服务器的不同,您可以查看用户是否有sent会话Cookie以及不再是valid的请求来检查。

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;

    if (request.getRequestedSessionId() != null && !request.isRequestedSessionIdValid()) {
        // Session has expired! Now do your job.
        response.sendRedirect(request.getContextPath() + "/CustomSessionTimeout.jsp");
        return;
    }

    chain.doFilter(req, res);
}