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

mak*_*aks 2 java servlets servlet-filters

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

Bal*_*usC 7

在该doFilter()方法中,您需要将获得的ServletResponse参数强制转换为HttpServletResponse然后sendRedirect()在其上调用方法.发出请求的页面可以通过referer请求标题获得(是的,带有legendaric拼写错误),这可以通过HttpServletRequest#getHeader()ServletRequest参数中转换后获得.

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

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

也可以看看: