如何在过滤器中重定向到引荐来源?

时间:2011-05-17 17:58:42

标签: java servlets servlet-filters

如何在过滤器中执行重定向到调用此过滤器的servlet或jsp。实际上,我想检查用户是否还没有看到某些内容,然后,在尝试获得forbbiden资源时,用户将留在他试图获取该资源的页面。

1 个答案:

答案 0 :(得分:7)

doFilter()方法中,您需要将获得的ServletResponse参数强制转换为HttpServletResponse,然后在其上调用sendRedirect()方法。发起请求的页面可以通过referer请求标头获取(是的,带有legendaric拼写错误),HttpServletRequest#getHeader()ServletRequest参数中转换后可以获取Our servlet-filters wiki page

if (userHasPermission) {
    chain.doFilter(request, response);
} else {
    String referrer = ((HttpServletRequest) request).getHeader("referer");
    ((HttpServletResponse) response).sendRedirect(referrer);
}

请注意,引荐来源是客户端控制的值,因此可能会被欺骗甚至删除。您希望对获得的值添加条件检查,当缺席或无效时,重定向到主页面或其他地方。

另见:

  • {{3}}(您可以将鼠标放在问题下方的标记上方,直到弹出框显示,然后点击弹出框上的信息链接)