0

我正在尝试通过手动添加所有依赖项等方式将 spring 安全性添加到自定义 Java 项目中。到目前为止,我已经成功了,但是我(认为我)的 WebSecurityConfigurerAdapter 有问题:

@Override
protected void configure(HttpSecurity http) throws Exception{
      http.authorizeRequests()
        .antMatchers("/index.html").hasAnyRole("USER", "ADMIN")
        .and()
        .sessionManagement()
        .sessionCreationPolicy(SessionCreationPolicy.NEVER)
        .and()
        .formLogin()
        .loginPage("/sign-in")
        .permitAll();
}

如上所述限制 index.html 时,用户在输入应用程序 base-URL 时需要立即登录(例如 localhost:8080/myapp/)。但是,如果我将 antMatcher 更改为:

    ...
         http.authorizeRequests()
        .antMatchers("/test**").hasAnyRole("USER", "ADMIN")
        .and()
    ...

我无需登录即可点击应用程序基本 URL。值得一提的是 index.html 和 test.html 完全相同(它们只包含一个 h1-tag),并且都位于生成的 .war 文件的根目录中: 在此处输入图片描述

如何配置应用程序,以便用户在输入基本 URL 时不必登录,而仅在请求 index.html 时(例如 localhost:8080/myapp/index.html)?

提前致谢

编辑:我的应用程序在 localhost:8080/myapp/ 有一个端点,如下所示:

@GetMapping("/")
public String home() {
    return ("<h1>Welcome</h1>");
}

这个想法是用户应该能够在无需进行身份验证的情况下访问它。

4

1 回答 1

0

你可以试试这个...

'''
         http.authorizeRequests()
        .antMatchers("/test**").permitAll().antMatchers("/index.html").hasAnyRole("USER", "ADMIN")
        .and()
'''
    

如果 test.html 是您的基本文件。

于 2021-01-12T01:43:46.580 回答