Я хочу войти в свое бэкэнд-приложение (Spring Boot and Security), но у меня проблема с входом в приложение Angular.Когда я делаю запрос от Почтальона, все работает.У меня есть собственная реализация SimpleUrlAuthenticationFailureHandler
, и когда я отлаживаю это, я вижу, что в запросе от Angular у меня нет никаких параметров.(Я проверяю это в методе onAuthenticationFailure
, вызывая System.out.println(request.getParameter("username"));
).Когда я делаю запрос от Почтальона, я вижу логин, конечно, я установил неправильный логин.
Вот мой код из сервиса аутентификации внешнего интерфейса.
export class SecurityService {
private baseUrl = environment.baseUrl;
constructor(private http: HttpClient){
}
login(){
console.log(this.baseUrl);
let username = 'user';
let password = 'userPass';
let body = JSON.stringify({ username: username, password: password })
let httpParams = new HttpParams();
httpParams = httpParams.append('username', username).append('password', password);
let headers = new HttpHeaders({ 'Content-Type': 'application/json' });
this.http.post<any>(this.baseUrl + "login", {body, headers})
.subscribe(value => console.log(value));
}
}
Я не знаю, как построить этот запрос в angular, и я все еще поднимаю статус 401 после запроса.Я не вижу никакой помощи в учебниках от Google или Youtube.
РЕДАКТИРОВАТЬ: Config Security
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private RestAuthenticationEntryPoint restAuthenticationEntryPoint;
@Autowired
private SuccessHandler successHandler;
@Autowired
private FailureLoginHandler failureLoginHandler;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("admin").password(passwordEncoder().encode("adminPass")).roles("ADMIN")
.and()
.withUser("user").password(passwordEncoder().encode("userPass")).roles("USER");
}
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.exceptionHandling()
.authenticationEntryPoint(restAuthenticationEntryPoint)
.and()
.authorizeRequests()
.antMatchers("/api/foo").authenticated()
.antMatchers("api/admin/**").hasRole("ADMIN")
.antMatchers("/login").permitAll()
.and()
.formLogin()
.successHandler(successHandler)
.failureHandler(failureLoginHandler)
.and()
.logout();
}
}