我的应用程序可以具有以下URL:
/siteadmin/homepage/ /siteusers/customer/createCustomer
以下是我的spring-security.xml:
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 。
http://localhost:8080/siteadmin/homepage/
admin
http://localhost:8080/siteadmin
/admin/*
Admin
参见AntPathMatcher:
映射使用以下规则匹配URL: ? 匹配一个字符 * 匹配零个或多个字符 ** 匹配路径中的零个或多个目录 一些例子: com/t?st.jsp-比赛com/test.jsp,com/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.jsp也org/springframework/testing/servlet/bla.jsp和org/servlet/bla.jsp
映射使用以下规则匹配URL:
?
*
**
一些例子:
com/t?st.jsp
com/test.jsp
com/tast.jsp
com/txst.jsp
com/*.jsp
.jsp
com
com/**/test.jsp
test.jsp
org/springframework/**/*.jsp
org/springframework
org/**/servlet/bla.jsp
org/springframework/servlet/bla.jsp
org/springframework/testing/servlet/bla.jsp
org/servlet/bla.jsp
您的图案/siteadmin***缺少斜线。使用/siteadmin/**。
/siteadmin***
/siteadmin/**