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.