Spring Security拦截URL模式不起作用
我的应用程序可以具有以下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 。
回答:
参见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
您的图案/siteadmin***
缺少斜线。使用/siteadmin/**
。
以上是 Spring Security拦截URL模式不起作用 的全部内容, 来源链接: utcz.com/qa/429330.html