gpt4 book ai didi

java - jsp:include 中的 jsp:forward 不会阻止原始页面完成处理吗?

转载 作者:太空宇宙 更新时间:2023-11-04 08:21:07 25 4
gpt4 key购买 nike

为了理解这个问题,我将解释一下情况:
ma​​in.jsp - 应用程序的主窗口
jsp_seacurity.jsp - JSP 文件,在用户无法访问给定页面的情况下发送重定向(我创建了单独的文件以在不同页面中重用它)
noaccess.jsp - 访问被拒绝页面

在我的 main.jsp 中,第一行是:

<jsp:include page="jsp_security.jsp?bo_item=main&bo_permission=view"/>

在 jsp_security.jsp 中,我做了一些检查,如果用户没有应用程序特定部分的权限,我将使用以下代码:

<jsp:forward page="noaccess.jsp"/>

在未经 main.jsp 许可的情况下使用用户登录后,我注意到,Glassfish 在日志文件中显示异常,该异常发生在我的 jsp:include 之后的 main.jsp 的某些行中。我检查了 jsp:include 文档,这就是我发现的

When the include action is finished, the JSP container continues processing the remainder of the JSP file.

现在的问题是,即使我在 jsp_security.jsp 中执行 jsp:forward 后,它还会继续处理 main.jsp 吗?有什么解决方法吗?我不是安全专家,也许我所做的完全是错误的?

感谢您的帮助,
谢尔希。

最佳答案

确实如此。此行在生成的 servlet 文件中放入的内容(jsp 编译为 servlet)是 request.getRequestDispatcher("target.jsp").forward(req, resp)

这并不意味着 doGet() 方法返回 - 它将继续执行。

这就是为什么您应该使用Filter来添加安全检查。如果不满足条件,您不会调用chain.doFilter(),而是重定向到“禁止”页面。

关于java - jsp:include 中的 jsp:forward 不会阻止原始页面完成处理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9523529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com