如果我使用类似Spring Securitys的“ antMatchers()”方法,有什么区别
.antMatchers(
"/",
"/app/**",
"/profiles/**",
"/captcha/**",
c440_START_PAGE,
FAVICON_ICO,
C440_LOGIN,
getCustomerRessourcePath(),
getCustomerWebRessourcePath(),
"/services/userService/**",
"/services/applicationService/**",
"/services/textContentService/**",
"/services/textContentBlockService/**",
"/services/menuItemService/**",
"/services/calculatorService/**"
).permitAll()
或
.antMatchers("/").permitAll()
.antMatchers("/app/**").permitAll()
.antMatchers("/profiles/**").permitAll()
.antMatchers("/captcha/**").permitAll()
.antMatchers(c440_START_PAGE).permitAll()
.antMatchers(FAVICON_ICO).permitAll()
.antMatchers(C440_LOGIN).permitAll()
.antMatchers(getCustomerRessourcePath()).permitAll()
.antMatchers(getCustomerWebRessourcePath()).permitAll()
.antMatchers("/services/userService/**").permitAll()
.antMatchers("/services/applicationService/**").permitAll()
.antMatchers("/services/textContentService/**").permitAll()
.antMatchers("/services/textContentBlockService/**").permitAll()
.antMatchers("/services/menuItemService/**").permitAll()
.antMatchers("/services/calculatorService/**").permitAll()
?我是Spring Security的新手,对此不确定...
答案 0 :(得分:2)
它们两者都与您的实现相同。但是第二种方法在提供基于角色的授权等方面提供了更大的灵活性。
例如,如果您希望授权角色ADMIN
访问"/"
和授权角色USER
访问"/app/*"
,则可以实现如下:
.antMatchers("/").hasRole("ADMIN")
.antMatchers("/app/**").hasRole("USER")
请注意,.permitAll()
仅需在具有相同配置的每组模式的末尾添加一次,而不必在每一行都添加一次。
antMatchers
方法的签名之一是
public C antMatchers(java.lang.String... antPatterns)
这意味着您可以将一个或多个模式传递给该方法。有关更多信息,请参见春季documentation for antMatchers