Я пытаюсь войти из моего приложения Reactjs в Spring boot ldap (Authentication).
Хотя это работает, но иногда я получаю 401 Ошибка аутентификации, но в блоке catch, что странно.
Вот мой код:
fd.append('j_username', encodeURI(username))
fd.append('j_password', encodeURI(password))
try {
const response = await axios({
url: configs.Data.loginURL,
method: 'post',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: fd,
withCredentials: true
});
console.log(response);
if (response.status === 200) {
return { loggedIn: true, error:'', status: response.status }
} else {
return { loggedIn: false, error:response.error, status: response.status }
}
} catch (err) {
return { status: err.response.status, error: err.response.statusText }
}
Spring Защитный код
protected void configure(HttpSecurity httpSecurity) throws Exception {
httpSecurity.cors().and().csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()).and().exceptionHandling().authenticationEntryPoint(authenticationEntryPoint()).and().formLogin().loginPage("/login").successHandler(successHandler()).failureHandler(failureHandler()).usernameParameter("j_username").passwordParameter("j_password").permitAll().and().httpBasic().and()
.logout().logoutUrl("/logout").invalidateHttpSession(true).deleteCookies("JSESSIONID").logoutSuccessHandler(logoutSuccessHandler()).permitAll().and()
.headers().frameOptions().deny().and()
.authorizeRequests()
.antMatchers("/").permitAll() .antMatchers("/admin/startProcess").access("hasAuthority('MANAGERS') or hasAuthority('SUPERUSER')").anyRequest().authenticated();}
Я успешно вошел в систему, и иногда я захожу в блок catch моего приложенияactjs.
Изображение ошибки аутентификации
Успешное изображение
Если я сначала нажму кнопку входа в систему, я получу ошибку аутентификации, а затем снова получу успех. Альтернативный ответ различен для одной и той же конечной точки