尝试使用Spring Security访问localhost:8080时获取TOO_MANY_REDIRECTS

vdgimpew  于 2023-04-21  发布在  Spring
关注(0)|答案(1)|浏览(190)

我已经按照this指南一步一步地做了,一遍又一遍地检查,但是当我尝试访问localhost:8080时,我看到了这个:

下面是我的WebConfig类:

@Configuration
@EnableWebSecurity
public class WebConfig {
    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
                .authorizeHttpRequests(requests -> requests
                        .requestMatchers("/", "/home").permitAll()
                        .anyRequest().authenticated()
                )
                .formLogin(form -> form
                        .loginPage("/login")
                        .permitAll()
                )
                .logout(LogoutConfigurer::permitAll);
        return http.build();
    }

    @Bean
    public UserDetailsService userDetailsService() {
        UserDetails user =
                User.withDefaultPasswordEncoder()
                        .username("user")
                        .password("password")
                        .roles("USER")
                        .build();
        return new InMemoryUserDetailsManager(user);
    }
}

与3个html文件一起:

我在整个网络上搜索了这个问题,没有找到解决方案。有什么指南或我遗漏的吗?代码中没有控制器或Map。只有webconfig和静态文件。
P.s.我看到启动应用程序时没有生成Spring Security密码:

这正常吗

ogsagwnx

ogsagwnx1#

/loginHTTP.GETMap未被任何MVCController解析。
添加一个名为controller的文件夹,并在其中创建一个MVCController.java文件,内容如下:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class MVCController {

    private static final Logger LOG = LoggerFactory.getLogger(MVCController.class);

    @GetMapping(value = "/login")
    public String login() {
        LOG.info("/login");

        LOG.info("Return login");

        //return login.html located in /resources/templates
        return "login";
    }
}

添加此内容后,当您访问http://localhost:8080时,应该会显示登录页面。

相关问题