public async Task <IActionResult> Autenticar(CredencialesViewModel credenciales)
        {
            if (!ModelState.IsValid)
            {
                return(View("Login", credenciales));
            }
            var cliente = await _service.AutenticarAsync(credenciales);

            if (cliente == null)
            {
                ModelState.AddModelError("", "Nombre de usuario o contraseña invalidos");
                return(View("Login", credenciales));
            }
            else
            {
                if (cliente.ExpiracionContrasena < DateTime.Now.Date)
                {
                    return(RedirectToAction("CambiarContrasena", "Cliente", new { id = cliente.Id }));
                }

                var principal = new ClaimsPrincipal(new ClaimsIdentity(new[]
                {
                    new Claim(ClaimTypes.Role, cliente.Permiso),
                    new Claim(ClaimTypes.Email, cliente.NombreUsuario),
                    new Claim("Id", cliente.Id.ToString()),
                }, CookieAuthenticationDefaults.AuthenticationScheme));

                await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, principal);

                return(RedirectToAction("Index", "Home"));
            }
        }