Wpis z mikrobloga

#java #naukaprogramowania #spring #springboot #springsecurity #angular #typescript spring security serwis angular Hej mam w swojej apce, zrobuione logowanie za pomocą loginForm() jak w postmanie wysyłam POST na /login?username=user&password=user to poprawnie mnie loguje, ale jak próbuje wysłać posta za pomocą serwisu w Angularze to wysyła się tylko OPTIONS i zwraca 403, domyślam się że chodzi o CORS ale w security configuration mam go wyłączonego, ktoś wie jak rozwiązać ten problem ?
  • 8
@infamia: nie zdążyłem edytować:
angular pewnie bije z innego adresu niż stoi twój serwer i Twoje security blokuje options na tym styku.

1. W security dodaj .cors().disable() [czy jakos tak]
2. Reverse proxy
3. Spermituj wszystkie options
4. Poprawnie zkonfiguruj cors
po dodaniu endpointa

@PreAuthorize("hasRole('USER')")
@PostMapping("/login")
public ResponseEntity login() {
return new ResponseEntity<>(HttpStatus.OK);
}

i zmianie serwisu na:

login(username: String, password: String): Observable {
let headers = new Headers({
Authorization: "Basic " + btoa(username + ":" + password),
"X-Requested-With": "XMLHttpRequest" // to suppress 401 browser popup
});

let config = {
headers: new HttpHeaders()
.append("X-Requested-With", "XMLHttpRequest")
.append("Authorization", "Basic " + btoa(username + ":" + password))
};

let data = { username: username,