kufelmleka
#programowanie #naukaprogramowania #spring #java

Mircy, dostaję
"There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'POST' not supported"
, przy wywołaniu domyślnej metody Spring Security odpowiedzialnej za obsługę POST przy logowaniu użytkownika, gdy w konfiguracji Spring Security nadpiszę poniższą metodę:

@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/resources/**").anyRequest();
}

, która pozwala na dostęp dla niezalogowanych użytkowników do css etc.
Gdy jej nie nadpiszę, normalnie można się zalogować.

Ma ktoś jakiś pomysł/wskazówkę jak to obejść? Dzięki z góry za pomoc.
  • Najlepsze
  • Wszystkie komentarze
fegwegw
@kufelmleka: napisz, co chcesz osiągnać, i co konkretnie się dzieje i kiedy - bo nie bardzo wynika z treści wpisu.
OverRide
@kufelmleka: Nie mam pojęcia...(╯︵╰,)
kufelmleka
kufelmleka Autor
0
@fegwegw: Mam formularz logowania i bez tej metody configure użytkownik może się zalogować, jednak przed logowaniem, aplikacja jakby nie miała dostępu do plików CSS. Dodanie tej metody powoduje, że niezalogowany użytkownik ma dostęp do CSS i strona wygląda po ludzku. Jednak kiedy przejdziemy do formularza logowania, wklepiemy dane i wciśniemy przycisk zaloguj dostajemy komunikat błędu jaki napisałem we wpisie. I ciekawi mnie czemu nadpisanie configure, jakby likwidowało domyślny springowy handler
fegwegw
@kufelmleka: a w jaki sposób, i do jakiego adresu konkretnie stukasz, kiedy dostajesz ten błąd?
Nicarim
Nicarim
@kufelmleka: a super nie musisz wywołać?
kufelmleka
kufelmleka Autor
0
@Nicarim: w kontrolerze obsługującym POST?
@fegwegw: w moim przypadku jest to http://localhost:8080/login. Dla tego adresu GET mam napisany, a POST nie musiałem, bo spring security robił to za mnie
fegwegw
@kufelmleka: a nie wiem, jakiś HttpSecurity:

.formLogin().loginUrl("/login").permitAll(); ?
kufelmleka
kufelmleka Autor
0
@fegwegw: Tak wygląda moja klasa z tym https://pastebin.com/EtYGVjH4
a sprawdzę z tym .loginUrl("/login")
Nicarim
Nicarim
@kufelmleka w sensie jak zrobiles override to wywolaj funkcje ktora nadpisales (w tym przypadku configure) - na logike biore.
kufelmleka
kufelmleka Autor
0
@Nicarim: Nie muszę jej wywoływać, bo ona zastępuje konfigurację .xml
Nicarim
Nicarim
@kufelmleka no ale skoro jej nadpisanie cos zmienia?
fegwegw
@Nicarim: ta metoda nie ma domyślnej implementacji, afair.
Eoghan
w moim przypadku jest to http://localhost:8080/login. Dla tego adresu GET mam napisany, a POST nie musiałem, bo spring security robił to za mnie


@kufelmleka: na mój gust to zrobiłeś gdzieś @RequestMapping("/login") przez co żądanie z formularza nie trafia tam gdzie powinno i nie ma to związku z tą metodą configure z pierwszego posta
kosmiczny_maupiak
web.ignoring().antMatchers("/resources/").anyRequest();


@kufelmleka: zdaje się, że fragment ".anyRequest()" jest nadmiarowy, samo web.ignoring().antMatchers("/resources/
") wystarcza do wykluczenia URLi z security.

nie wiem czy dobrze pamiętam (nie mam możliwości zajrzeć w kod), ale web.ignoring() wyklucza dane URLe z security, więc w połączeniu z ".anyRequest()" może wycina również /login?