首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有可能用spring-security来保护一个包含的jsp吗?

问有可能用spring-security来保护一个包含的jsp吗?
EN

Stack Overflow用户
提问于 2010-10-06 05:09:46
回答 3查看 1.3K关注 0票数 0

我得到了一个导入jsp文件的jsp。是否可以使用spring-security配置来保护导入?

例如,我想使用下面这行代码:

代码语言:javascript
复制
<c:import url="jsp/admin/add_user.jsp" />

但是,如果用户不是以管理员身份登录,则由于安全原因,此导入应该不起作用。我用下面这行代码保护了admin文件夹

代码语言:javascript
复制
<intercept-url pattern="/jsp/admin/**" access="hasRole('ROLE_ADMIN')" />

但是,当在不需要管理员权限的jsp文件中导入add_user jsp时,如果用户以没有管理员角色的用户身份登录,它仍然有效。如果没有必要的话,我不喜欢在导入过程中使用标签。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-08 22:58:36

Spring Security使用Servlet过滤器来确保用户正在访问的资源的安全机制。

当您导入JSP时,Servlet过滤器不能拦截调用,因为资源是在内部加载的,没有通过Servlet连接。

一种可能的解决方案是在jsp页面中添加逻辑,如果用户没有必要的凭据,该逻辑将阻止导入安全资源。

我不是JSP专家,但我不明白如何在不添加导入标记的情况下添加必要的逻辑。

票数 4
EN

Stack Overflow用户

发布于 2010-10-13 06:10:26

您可以通过强制请求离开容器来实现这一点。例如:

代码语言:javascript
复制
<c:import url="http://localhost/jsp/admin/add_user.jsp" />

然而,我并不真的推荐这样做。一个原因是,在许多容器中,如果从导入的url返回403,它将传播到父页面,并为整个页面返回403。

因此,用一些spring安全标记包装导入可能是一种更好的方法。

尽管我也会考虑简单地使用两个单独的jsp-一个用于管理员用户,另一个用于非管理员用户。如果您将页面分解为组件,则几乎不需要复制内容。

票数 1
EN

Stack Overflow用户

发布于 2011-04-06 17:19:38

代码语言:javascript
复制
<%@ 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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3867755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档