логин безопасности весны 404 - PullRequest
0 голосов
/ 27 апреля 2018

я исследую немного весны. я наткнулся на весеннюю загрузку для легких конечных точек, см .:

@Controller
@EnableAutoConfiguration
public class SampleController {

    @RequestMapping("/sample")
    @ResponseBody
    String sample() {
        return "Hello sample!";
    }

    @RequestMapping("/sample2")
    @ResponseBody
    String sample2() {
        return "Hello sample secured!";
    }
}

логически конечные точки доступны на локальном хосте: 8181 / sample

но при использовании Spring Security «защищенная» конечная точка стала недоступной, потому что страница входа дает мне 404

login page gives me 404

Мой класс безопасности выглядит следующим образом:

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .antMatchers("/sample" ).permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
                .logout()
                .permitAll();
    }

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

        return new InMemoryUserDetailsManager(user);
    }
}

Я могу получить доступ к / sample , поскольку он не защищен. но не может получить доступ к / sample2 , поскольку он перенаправляет на / login

я настраиваю свой класс безопасности в соответствии с этим руководством: https://spring.io/guides/gs/securing-web/

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Ввести userDetailsService в authenticationProvider:

    @Bean
    public AuthenticationProvider authenticationProvider(){
        DaoAuthenticationProvider authenticationProvider=new CustomAuthenticationProvider();
        authenticationProvider.setUserDetailsService(userDetailsService());
        return authenticationProvider;
    }

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception{
        auth.authenticationProvider(authenticationProvider());
    }

Добавьте эту конфигурацию к безопасности пружины:

    .antMatchers("/sample2").hasRole("USER")
0 голосов
/ 27 апреля 2018

Я могу получить доступ к /sample, поскольку он не защищен. Но не может получить доступ / sample2, поскольку он перенаправляет на /login

Поскольку вы не пропустили /sample2 в своей конфигурации безопасности.

 .antMatchers("/sample2" ).permitAll()

Другое дело, что, как вы указали пользовательскую страницу входа

.formLogin()
.loginPage("/login")

Вы должны указать страницу входа.

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