【问题标题】:Spring Security 3.1 intercept urlsSpring Security 3.1 拦截 url
【发布时间】:2012-05-16 04:20:32
【问题描述】:

我有我的拦截网址配置

<security:http use-expressions="true" disable-url-rewriting="true">

    <security:intercept-url pattern="/secure/admission/*" access="hasRole('ROLE_ADMISSIONER')" />              
    <security:intercept-url pattern="/secure/subdean/*" access="hasRole('ROLE_SUBDEAN')" />
    <security:intercept-url pattern="/secure/referent/*" access="hasRole('ROLE_REFERENT')" />                   
    <security:intercept-url pattern="/secure/index.xhtml" access="hasRole('ROLE_REFERENT, ROLE_SUBDEAN')" />    
    <security:intercept-url pattern="/secure/*" access="hasRole('ROLE_OMNI_ADMIN')" />
    <security:intercept-url pattern="/**" access="isAuthenticated()" />

但现在我有一个问题,可以访问我的应用程序的 url,例如 MY_APPLICATION/PririzMaven/secure/admin/updateRole.xhtml 角色 ROLE_ADMISSIONER, url ..../secure/subdean/* 用这个相同的角色等等......但它应该被禁止给这个用户。

你知道哪里有问题吗?

【问题讨论】:

    标签: spring authentication spring-security


    【解决方案1】:

    假设 PririzMaven 是应用程序的上下文路径,/secure/admin/updateRole.xhtml 将与路径 /** 匹配,因此所有经过身份验证的用户都可以访问。 /secure/admin 没有规则。另请注意,单个“*”不匹配子路径。例如,您应该使用/secure/admin/** 来匹配此路径下的所有内容。

    您还应该启用调试日志记录并检查规则是如何应用的 - 您应该会看到针对传入请求 URL 调用的匹配器,并将看到正在比较的内容以及正在匹配的内容。

    最后,值得在应用程序上下文文件的顶部添加&lt;security:debug /&gt;,这将以更易于阅读的格式添加有关请求处理的其他有用调试信息。

    【讨论】:

      猜你喜欢
      • 2012-08-15
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      • 2017-06-15
      • 1970-01-01
      • 2013-06-17
      相关资源
      最近更新 更多