infamia
infamia
#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 ?
  • Najlepsze
  • Wszystkie komentarze
tempname0626
@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
tempname0626
@infamia: ten options to jest preflight request
infamia
infamia
infamia Autor
0
@tempname0626: wiem, ale jak tego zwykłego POSTa wysłać ?
infamia
infamia
infamia Autor
0
@tempname0626: dodałem permitAll dla OPTIONS, i disable cors, ale nadal nie działa, o co chodzi z Reverse proxy ?
security link
murzynzgetta
Najprościej dodać adnotację @CrossOrigin na kontroler albo konkretną metodę. Jeżeli podamy bez argumentu to przepuści zapytania z każdego miejsca.
infamia
infamia
infamia Autor
0
po dodaniu endpointa

@PreAuthorize("hasRole('USER')")
@PostMapping("/login")
public ResponseEntity login() {
return
murzynzgetta
A tak spróbuj:

@PreAuthorize("hasRole('USER')")
@PostMapping("/login")
@CrossOrigin
dazerek
dazerek
@infamia: poczytaj jak zakodzić Spring Security Policy, jak masz klasę z adnotacją @EnableWebSecurity to robisz na niej coś takiego:

.authorizeRequests()
.antMatchers("/api/login").permitAll()

Więcej info tutaj:
https://github.com/spring-projects/spring-data-examples/tree/master/rest/security#writing-a-security-policy