Formulário de Login com 3 campos
24/11/2017 15:31
1
Olá Pessoa, tudo bem com vocês?
Estou precisando de uma ajuda urgente para avançar no meu projeto do trabalho.

Tenho um formulário de login com 3 campos. Tem alguma forma de fazer com que ele funcione no spring security sem aquele ajuste técnico de concatenar os dois e depois dar split? Tipo uma forma oficial mesmo.
Pois fiz daquele jeito mas está dando um erro ao resgatar o usuário logado. Até consegui fazer funcionar, mas nao está me servindo tanto mais.

Espero que consigam me ajudar.

Obs: estou usando apenas o Spring Security no meu projeto Java EE.
Tags: spring security, login, autenticação, tres inputs


0
Oi Nathália, tem sim.
Uma solução bastante simples é você implementar um endpoint REST que espere estes três campos para realizar a autenticação. Este endpoint poderia ser implementado tal como no exemplo a seguir em pseudo-código:

@Autowired
private SeuProvider seuProvider
public String autenticar(@RequestBody dtoTresCampos) {
    Authentication auth = seuProvider.auth(dtoTresCampos);
    if (auth != null) {
         SecurityContextHolder.getSecurityContext().setAuthentiation(auth); // aqui rola a autenticação
    }
}


Você pode implementar o seu próprio authentication provider que espere receber como credenciais um objeto que represente seus três campos. Na sequência, ele faria a lógica de buscar nas suas fontes de dados informações a respeito do usuário fornecido pelas credenciais e, existindo, retornaria um objeto que implemente a interface Authentication do Spring Security.
Aí, voilá, se você chamar o método setAUthentication do SecurityContext passando este objeto, estará autenticando seu usuário. Caso precise de ajuda, estou aqui pra ajudar.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails, Spring e mais com a Formação itexto!

Livro de Spring


/dev/All

Os melhores blogs de TI
em um único lugar!

 
Spring Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.