Как сделать Аутентификацию в безопасности Spring с использованием пользовательского сервиса детальной информации и углового js 2 в качестве внешнего интерфейса

Это мой файл конфигурации безопасности

    package com.data.topic;


 @EnableWebSecurity
 @ComponentScan(basePackageClasses = CustomUserDetailService.class)
 public class Security extends WebSecurityConfigurerAdapter {

@Autowired
private UserDetailsService userDetailsService;

 @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/css/**", "/index").permitAll()
                .antMatchers("/js/**").permitAll()
                .antMatchers("/node_modules").permitAll()


                .antMatchers("/topic/**").hasRole("user")           
                .and()
            .formLogin().loginPage("/sch_signin")

                .usernameParameter("username")
                .passwordParameter("password")
                .successForwardUrl("/")
                .failureUrl("/login-error")
                .and().csrf().disable();

    }

 @Autowired
 public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {    
     auth.userDetailsService(userDetailsServiceBean());
 } 

 @Override
    public UserDetailsService userDetailsServiceBean() throws Exception {
        return new CustomUserDetailService();
    }

   }

я хочу знать, как я должен отправить имя пользователя и пароль, используя angular2, я попробовал этот метод при отправке

 onSubmit(){

let url="http://localhost:8080/sch_signin";
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });

console.log(this.user);
 this.http.post(url,JSON.stringify(this.user),options);
 console.log('data submited');

 }

я не получаю никакой ошибки, и я тоже не аутентифицируюсь

помогите пожалуйста разобраться как пружина перехватывает запрос аутентификации

1 ответ

Я получил решение после некоторых исследований. Я неправильно разместил форму, чтобы правильно отправить форму в Angular2.

let url="http://localhost:8080/sch_signin";
let headers = new Headers({'Content-Type':'application/x-www-form-urlencoded'});
let options = new RequestOptions({ headers: headers });

this.http.post(url,body.toString(),options).subscribe((data)=>console.log(data));

Сначала тип контента должен быть application/x-www-form-urlencoded и, во-вторых, вы должны отправить данные в теле запроса, чтобы Spring Security мог их прочитать.

Другие вопросы по тегам