como isso realmente funciona? Eu escrevi um aplicativo de exemplo usando boot primavera com segurança e thymeleaf. Como [tutorial]: http://www.thymeleaf.org/doc/articles/springsecurity.html mostra apenas precisa criar controlador e página de login. Mas...
Na configuração de segurança há fragmento como
loginPage("/login.html")
em seguida, no controlador há mapeamento de solicitação para / login como
@RequestMapping("/login.html")
public String login() {
return "login.html";
}
e, em seguida, na página thymeleaf há mapeamento de ação como
<form th:action="@{/login.html}" method="post">
Assim..quando alguém tenta acessar a página restrita é redirecionado para a página de login, o que significa que login.html é exibido. Em seguida, após preencher o formulário, o usuário clica no botão e aciona a ação que é mapeada no controlador que retorna login.html novamente. Parece um loop. Mas isso funciona. Como??
Respostas:
0 para resposta № 1Eu acho que vejo a confusão aqui. Em versões recentes do Spring Security, é possível e até encorajado por padrão que o página de login e URL de processamento de login são o mesmo endereço (mas eles não precisam ser) Isso é possível devido a diferentes métodos HTTP.
Quando redirecionado para a página de login, a página é recuperada usando uma solicitação GET. O filtro de autenticação vê isso, mas passa a solicitação para o Spring MVC e o controlador, já que é uma solicitação GET.
Ao enviar o formulário, o nome de usuário esenha são enviadas em uma solicitação POST. O filtro de autenticação intercepta essa solicitação, pois é o POST, realiza a autenticação e executa ações dependendo do resultado. A solicitação não é encaminhada para o controlador neste caso.