尝试 @Override addViewControllers() 方法时出现问题 - Spring Security

Nac*_*rre 4 java spring spring-mvc spring-security spring-boot

我正在按照本教程第 5 部分:将 Spring Security 与 Spring Boot Web 集成,尝试将 Spring Security 功能添加到我的网页,但遇到大量配置问题。

所以我已经到了需要@Override这个方法的部分:

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/login").setViewName("login");
}
Run Code Online (Sandbox Code Playgroud)

但我不太确定将代码放在哪里。我用谷歌搜索发现大多数人将它放在扩展的类中,WebSecurityConfigurerAdapter但这在我的情况下不起作用,我收到一条错误消息,指出该方法不会覆盖其超类中的任何方法。

这是我的SecurityConfig扩展WebSecurityConfigurerAdapter

@Configuration
@EnableWebMvcSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests().anyRequest().authenticated()
            .antMatchers("/resources/**").permitAll()
            .anyRequest().permitAll();

        http
            .formLogin().failureUrl("/ingresar?error")
                        .defaultSuccessUrl("/")
            .loginPage("/ingresar").permitAll()
            .and()
            .logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
                     .logoutSuccessUrl("/logout")
                     .permitAll();
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
        auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
    }
}
Run Code Online (Sandbox Code Playgroud)

任何想法 ??我已经尝试了好几个小时了!

Nik*_*las 6

这种映射与安全性本身没有任何共同点。它只是返回视图的控制器定义。

您肯定有一个类实现WebMvcConfigurer并用 @Configuration注释进行注释。如果没有,请创建它。包括这个方法覆盖在那里。

@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {

   @Override
   public void addViewControllers(ViewControllerRegistry registry) {
       registry.addViewController("/login").setViewName("login");
   }
}
Run Code Online (Sandbox Code Playgroud)

请注意,该类有许多可供重写的默认方法。方法WebMvcConfigurer::addViewControllers肯定在那里。