Как сделать Аутентификацию в безопасности 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 мог их прочитать.