小编典典

Spring Security拦截URL模式不起作用

spring-mvc

我的应用程序可以具有以下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/siteadminSpring
Security可以正常工作。其显示拒绝访问页面。我想限制/admin/*没有Admin角色的用户的URL 。


阅读 944

收藏
2020-06-01

共1个答案

小编典典

参见AntPathMatcher

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

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

一些例子:

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

您的图案/siteadmin***缺少斜线。使用/siteadmin/**

2020-06-01