Nesta aula foi usado o SecurityConstextHolder
para pegar o name
no usuário logado, pergunto qual diferença entre usar esta classe e o objeto Principal
passado como parâmetro da forma abaixo?
@PostMapping("novo")
public String novoPedido(@Valid RequisicaoDTO requisicaoDTO, BindingResult result, Principal principal) {
if (result.hasErrors()) {
return "pedido/formulario";
}
User user = userRepository.findByUsername(principal.getName());
Pedido pedido = requisicaoDTO.toPedido();
pedido.setUser(user);
repository.save(pedido);
return "redirect:/home";
}
Seria má pratica ou poderia gerar alguma falha de segurança ? O resultado é o mesmo na minha aplicação.