/ / Spring security authentication - parece com o loop infinito, mas funciona. Como? - segurança de nascente

Autenticação de segurança Spring - parece com o loop infinito, mas funciona. Como? - segurança de nascente

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 № 1

Eu 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.