Проблема при попытке переопределить метод addViewControllers () - Spring Security - PullRequest
0 голосов
/ 14 декабря 2018

Я следую этому уроку Часть 5. Интеграция Spring Security с Spring Boot Web пытаюсь добавить функциональность Spring Security на мою веб-страницу, но у меня куча проблем с конфигурацией.

Итак, я попал в эту часть, где мне нужно @Override этот метод:

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

Но я не совсем уверен, куда поместить код.Я гуглил и обнаружил, что большинство людей помещают его в класс, который расширяет 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 голосов
/ 14 декабря 2018

У вас должен быть класс @Configuration, который реализует WebMvcConfigurer.Там вы можете переопределить addViewControllers

Это поможет вам:

@Configuration
public class WebConfig implements WebMvcConfigurer {

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

}
0 голосов
/ 14 декабря 2018

Это отображение не имеет ничего общего с самой безопасностью.Это просто определение контроллера для возврата представления.

У вас наверняка есть класс, реализующий WebMvcConfigurer и аннотированный @Configuration аннотацией.Если нет, создайте его.Включите этот метод, переопределите его там.

@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {

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

Обратите внимание, что у класса есть много методов по умолчанию, доступных для переопределения.Метод WebMvcConfigurer::addViewControllers обязательно есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...