【问题标题】:Spring Security url-interceptor leak at /*Spring Security url-interceptor 在 /* 处泄漏
【发布时间】:2017-04-17 21:49:26
【问题描述】:

Spring Security 2.x 正在拦截http:servername/webAppName。根据我的理解,filter="none" 应该丢弃不需要访问角色的 URL 的任何 Spring Security 过滤器链。任何人都知道为什么此设置会拦截所有未声明的 URL(/listing/load),包括基本 URL?

<http auto-config="true" entry-point-ref="entryPoint" session-fixation-protection="none">
    <intercept-url pattern="/listing/pages/*" filters="none"/>
    <intercept-url pattern="/load/page/*" filters="none"/>
    <intercept-url pattern="/admin/*" access="ROLE_USER"/>
    <intercept-url pattern="/secret/*" access="ROLE_USER"/>
    <intercept-url pattern="/**" filters="none"/>
    <http-basic/>
</http>

【问题讨论】:

标签: spring-security


【解决方案1】:

试试这个,

<security:http auto-config="true" entry-point-ref="entryPoint" session-
fixation-protection="none">
<http-basic/>
<intercept-url pattern="/admin/*" access="ROLE_USER"/>
<intercept-url pattern="/secret/*" access="ROLE_USER"/>
<intercept-url pattern="/listing/pages/*" access="ROLE_ANONYMOUS"/>
<intercept-url pattern="/load/page/*" access="ROLE_ANONYMOUS"/>
<intercept-url pattern="/**" access="ROLE_ANONYMOUS"/>
</security:http>

是的,检查你的 xmlns 命名空间是否有 spring 安全性,这样好吗?

【讨论】:

  • 为了测试目的,我替换了你提到的并最终有一个无限循环。 access="ROLE_ANONYMOUS" 不会丢弃过滤器链,如果请求标头缺少来自站点管理员的信息,则添加的自定义过滤器将引发异常。这里的目的是跳过过滤器链。以下是我的命名空间。
  • @MAXStack 如果您只想跳过过滤器链(尽管不推荐),那么只需执行以下操作:通过扩展 GenericFilterBean 编写您自己的自定义过滤器,然后执行您的业务任务并删除对 filterChain.doFilter(request, response) 方法的调用。如果想查看编写自定义过滤器的示例,请在此处查看我的其他答案stackoverflow.com/a/43474961/6838178
  • 感谢您的提示。使用过滤器类 AstractPreAuthenticatedProcessingFilter 的自定义过滤器已经到位。我能够修复除基础之外的所有网址。所以我想我最终会将它作为例外添加到我的逻辑中。再次感谢一堆
猜你喜欢
  • 2011-12-15
  • 2012-02-03
  • 2015-01-25
  • 1970-01-01
  • 2023-03-10
  • 2017-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多