我得到了一个导入jsp文件的jsp。是否可以使用spring-security配置来保护导入?
例如,我想使用下面这行代码:
<c:import url="jsp/admin/add_user.jsp" />但是,如果用户不是以管理员身份登录,则由于安全原因,此导入应该不起作用。我用下面这行代码保护了admin文件夹
<intercept-url pattern="/jsp/admin/**" access="hasRole('ROLE_ADMIN')" />但是,当在不需要管理员权限的jsp文件中导入add_user jsp时,如果用户以没有管理员角色的用户身份登录,它仍然有效。如果没有必要的话,我不喜欢在导入过程中使用标签。
发布于 2010-10-08 22:58:36
Spring Security使用Servlet过滤器来确保用户正在访问的资源的安全机制。
当您导入JSP时,Servlet过滤器不能拦截调用,因为资源是在内部加载的,没有通过Servlet连接。
一种可能的解决方案是在jsp页面中添加逻辑,如果用户没有必要的凭据,该逻辑将阻止导入安全资源。
我不是JSP专家,但我不明白如何在不添加导入标记的情况下添加必要的逻辑。
发布于 2010-10-13 06:10:26
您可以通过强制请求离开容器来实现这一点。例如:
<c:import url="http://localhost/jsp/admin/add_user.jsp" />然而,我并不真的推荐这样做。一个原因是,在许多容器中,如果从导入的url返回403,它将传播到父页面,并为整个页面返回403。
因此,用一些spring安全标记包装导入可能是一种更好的方法。
尽管我也会考虑简单地使用两个单独的jsp-一个用于管理员用户,另一个用于非管理员用户。如果您将页面分解为组件,则几乎不需要复制内容。
发布于 2011-04-06 17:19:38
<%@ taglib prefix="authz"
uri="http://www.springframework.org/security/tags"%>
----
<authz:authorize access="hasRole('campaign_read')">
Manager login --- <%@include file="manager/create_viewer.jsp"%>
</authz:authorize>https://stackoverflow.com/questions/3867755
复制相似问题