如何通过多个路径使用Spring Security .antMatchers()

时间:2019-03-08 09:50:47

标签: java spring spring-security

如果我使用类似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的新手,对此不确定...

1 个答案:

答案 0 :(得分:2)

它们两者都与您的实现相同。但是第二种方法在提供基于角色的授权等方面提供了更大的灵活性。

例如,如果您希望授权角色ADMIN访问"/"和授权角色USER访问"/app/*",则可以实现如下:

.antMatchers("/").hasRole("ADMIN")
.antMatchers("/app/**").hasRole("USER")

请注意,.permitAll()仅需在具有相同配置的每组模式的末尾添加一次,而不必在每一行都添加一次。

antMatchers方法的签名之一是

public C antMatchers(java.lang.String... antPatterns)

这意味着您可以将一个或多个模式传递给该方法。有关更多信息,请参见春季documentation for antMatchers