ASP .NET Core 3.1 - Usando o Identity de cabo a rabo - XI


Hoje vamos continuar a série de artigos mostrando como usar o ASP .NET Core Identiy na versão 3.1 da ASP .NET .Core e do EF Core.

Continuando a décima parte do artigo veremos como realizar a validação remota na ASP .NET Core.

A validação remota na ASP .NET Core

A validação remota permite que um método Action do controlador seja chamado usando o script do lado do cliente. Isso é muito útil quando você deseja chamar um método do lado do servidor sem uma postagem de página inteira.

Assim a validação é iniciada no lado do cliente mas realizada no lado do servidor.

Um exemplo prático seria verificar se um email fornecido no formulário de registro do usuário já esta sendo usado por outro usuário. Isso somente pode ser feito no lado do servidor.

Para fazer isso podemos definir um método Action IsEmailInUse() que verifica se o email já esta sendo usado:

        [AcceptVerbs("Get", "Post")]
        [AllowAnonymous]
        public async Task<IActionResult> IsEmailInUse(string email)
        {
            var user = await userManager.FindByEmailAsync(email);
            if (user == null)
            {
                return Json(true);
            }
            else
            {
                return Json($"O Email {email} já está sendo usado.");
            }
        }

Vamos entender o código acima:

Para que isso funcione temos que ajustar a classe RegisterViewModel do modelo conforme abaixo:

    public class RegisterViewModel
    {
        [Required(ErrorMessage="O email é obrigatório")]
        [EmailAddress(ErrorMessage="Email inválido")]
        [Remote(action: "IsEmailInUse", controller: "Account")]
        public string Email { get; set; }
        ...
    }

Observe que decoramos a propriedade Email com o atributo [Remote] apontando para o método Action IsEmailInUse que deve ser chamado quando o valor do email for alterado no controlador Account.

O atributo Remote permite aproveitar o suporte do validador remote do plug-in jQuery. Isso permite que a biblioteca de validação do lado do cliente possa chamar um método personalizado que você definiu no servidor para executar a lógica de validação que só pode ser feita do lado do servidor.

O processo de validação remota permite validar os dados específicos de postagem para um servidor sem postar os todos os dados do formulário para o servidor.

Se a validação remota não estiver funcionando no seu projeto verifique se as seguintes bibliotecas de validação do lado do cliente estão carregadas na ordem especificada :  jquery.js,  jquery.validate.js e jquery.validate.unobtrusive.js.

No próximo artigo veremos como estender a classe IdentityUser da ASP .NET Core.

"Mas Deus escolheu as coisas loucas deste mundo para confundir as sábias; e Deus escolheu as coisas fracas deste mundo para confundir as fortes;
E Deus escolheu as coisas vis deste mundo, e as desprezíveis, e as que não são, para aniquilar as que são;
Para que nenhuma carne se glorie perante ele."

1 Coríntios 1:27-29

Referências:


José Carlos Macoratti