【发布时间】:2019-12-30 16:10:58
【问题描述】:
我正在学习 Spring,想知道为什么我改变这两个 authorizeRequests() 方法的顺序时会有区别:
这很好用:
security.authorizeRequests()
.antMatchers("/css/**")
.permitAll();
security.authorizeRequests()
.anyRequest()
.authenticated();
这不是:
security.authorizeRequests()
.anyRequest()
.authenticated();
security.authorizeRequests()
.antMatchers("/css/**")
.permitAll();
我所说的“不起作用”是指在我的登录页面中,使用第二个示例时未应用 CSS。为什么这两种方法的顺序实际上很重要?
【问题讨论】:
-
规则按照定义的顺序被考虑。第一个匹配的规则被采用。在您的第二个示例中,每个请求都需要身份验证。见docs.spring.io/spring-security/site/docs/5.1.6.RELEASE/…
-
我现在明白了,这些规则应该从最具体到最一般定义,所以当一路上没有任何匹配时,应用最后一个规则。谢谢你:)
-
作为一个例子说明为什么你会看到这个:stackoverflow.com/q/57304623/5640649
标签: java spring-security