Wpis z mikrobloga

#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.
  • 14
@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 logowania
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
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?