Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在筛选器中重定向到推荐人?_Java_Servlets_Servlet Filters - Fatal编程技术网

Java 如何在筛选器中重定向到推荐人?

Java 如何在筛选器中重定向到推荐人?,java,servlets,servlet-filters,Java,Servlets,Servlet Filters,如何在过滤器中执行重定向到调用此过滤器的servlet或jsp。实际上,我想检查用户是否没有查看某些内容的权限,然后,在尝试获取forbbiden资源时,用户将停留在他试图获取该资源的页面上 在该方法中,需要将获得的参数强制转换为,然后对其调用该方法。发起请求的页面可以通过referer请求头(是的,拼写错误)获得,该页面可以通过从参数强制转换后获得 if (userHasPermission) { chain.doFilter(request, response); } else {

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

在该方法中,需要将获得的参数强制转换为,然后对其调用该方法。发起请求的页面可以通过
referer
请求头(是的,拼写错误)获得,该页面可以通过从参数强制转换后获得

if (userHasPermission) {
    chain.doFilter(request, response);
} else {
    String referrer = ((HttpServletRequest) request).getHeader("referer");
    ((HttpServletResponse) response).sendRedirect(referrer);
}
请注意,推荐人是一个客户端控制的值,因此可以对其进行欺骗甚至删除。您希望对获取的值添加条件检查,如果不存在或无效,则重定向到主页面或其他地方

另见:
  • (将鼠标放在问题下方的标签上方,直到弹出框显示,然后单击弹出框上的信息链接,即可获得此页面)

否,您提供了要重定向的页面的静态名称,我想知道我从哪个页面(servlet)进入此过滤器并重定向到该页面,但根据此((HttpServletRequest)请求)。getHeader(“referer”)不会返回任何内容。当从HTTPS切换到HTTP时,它确实会被忽略。正如您自己链接的问题/答案所说:)那么,您在代码中是否也从HTTPS切换到HTTP?您需要将当前请求URI作为请求参数传递。总而言之,我不得不承认,你问题中提到的功能需求在现实世界中没有什么意义。我真的要重新考虑让你的网络应用程序这样做的决定。我宁愿显示一个401未经授权或403禁止的错误页面,就像其他任何一个像样的Web应用一样。我没有在代码中从HTTPS切换到HTTP,但((HttpServletRequest)请求。getHeader(“referer”)总是返回null。无论如何,非常感谢您的网络浏览器或插件或某些特定于客户端平台的软件隐藏了它。例如,一些Norton软件设置为欺骗/隐藏HTTP引用者。从服务器端看,没有什么可反对的。