【问题标题】:Spring Security Intercept-url pattern not workingSpring Security Intercept-url 模式不起作用
【发布时间】:2017-01-18 15:20:38
【问题描述】:

我的应用程序可以有以下 URL:

/siteadmin/homepage/
/siteusers/customer/createCustomer

下面是我的spring-security.xml

<beans:beans> 
    <http auto-config="true">
        <intercept-url pattern="/siteusers***" access="isAuthenticated()" />
        <!-- <intercept-url pattern="siteusers/home/*" access="hasRole('USER') OR hasRole('ADMIN')" /> -->
        <intercept-url pattern="/siteadmin***" access="hasRole('ROLE_ADMIN')" />`enter code here`
        <form-login login-page="/siteusers/loginprocess/login" default-target-url="/siteusers/home/homepage"
            login-processing-url="/siteusers/loginprocess/login"
            authentication-failure-url="/siteusers/loginprocess/login?error" username-parameter="username"
            password-parameter="password" />
        <logout logout-success-url="/siteusers/loginprocess/login?logout" logout-url="/siteusers/loginprocess/logout" />
        <!-- enable csrf protection -->
        <csrf />
    </http>

    <authentication-manager>
        <authentication-provider>
            <user-service>
                <user name="b" password="123456" authorities="ROLE_ADMIN" />
                <user name="a" password="a" authorities="ROLE_USER" /><!-- This user can not access /admin url -->
            </user-service>
        </authentication-provider>
    </authentication-manager>
</beans:beans>

如果我使用用户“a”登录并点击 URL http://localhost:8080/siteadmin/homepage/,则允许用户“a”查看该页面,尽管他的角色不是 admin。但是当我尝试点击http://localhost:8080/siteadmin 时,Spring Security 工作正常,即。它显示拒绝访问页面。 我想为没有Admin 角色的用户限制/admin/* URL。

【问题讨论】:

    标签: spring-mvc spring-security


    【解决方案1】:

    AntPathMatcher:

    映射使用以下规则匹配 URL:

    • ? 匹配一个字符
    • * 匹配零个或多个字符
    • ** 匹配路径中的零个或多个目录

    一些例子:

    • com/t?st.jsp - 匹配 com/test.jsp 但也匹配 com/tast.jspcom/txst.jsp
    • com/*.jsp - 匹配 com 目录中的所有 .jsp 文件
    • com/**/test.jsp - 匹配 com 路径下的所有 test.jsp 文件
    • org/springframework/**/*.jsp - 匹配 org/springframework 路径下的所有 .jsp 文件
    • org/**/servlet/bla.jsp - 匹配 org/springframework/servlet/bla.jsp 但也匹配 org/springframework/testing/servlet/bla.jsporg/servlet/bla.jsp

    您的模式/siteadmin***misses 斜线。使用/siteadmin/**

    【讨论】:

      猜你喜欢
      • 2014-11-28
      • 2012-08-03
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 2011-12-15
      • 2011-10-16
      • 2013-07-03
      相关资源
      最近更新 更多