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

时间:2018-12-14 20:43:51

标签: java spring spring-mvc spring-security configuration

我正在按照本教程Part 5: Integrating Spring Security with Spring Boot Web尝试将Spring Security功能添加到我的网页中,但是我遇到了很多配置问题。

因此,我到了需要@Override这种方法的地方:

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/login").setViewName("login");
}

但是我不太确定将代码放在哪里。我已经在Google上搜索,发现大多数人将其放在扩展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");
    }
}

有什么主意吗?我已经尝试了几个小时了!

2 个答案:

答案 0 :(得分:2)

此映射与安全性本身没有共同之处。这只是返回视图的控制器定义。

您肯定有一个实现WebMvcConfigurer并带有@Configuration批注的类。如果没有,请创建它。在该处覆盖此方法。

@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {

   @Override
   public void addViewControllers(ViewControllerRegistry registry) {
       registry.addViewController("/login").setViewName("login");
   }
}

请注意,该类具有许多可被覆盖的默认方法。方法WebMvcConfigurer::addViewControllers肯定在那里。

答案 1 :(得分:2)

您应该有一个实现@Configuration的{​​{1}}类。在这里您可以覆盖WebMvcConfigurer

这将帮助您:

addViewControllers