private object GeraToken(LoginUsuarioInfoDto userInfo)
        {
            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.UniqueName, userInfo.UserName),
                new Claim("melhorLinux", "KDE_Neon"),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
            };

            var key = new SymmetricSecurityKey(
                Encoding.UTF8.GetBytes(_configuration["Jwt:key"]));
            var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var expiracao  = _configuration["TokenConfiguration:ExpireHours"];
            var expiration = DateTime.UtcNow.AddHours(double.Parse(expiracao));

            JwtSecurityToken token = new JwtSecurityToken(
                issuer: _configuration["TokenConfiguration:Issuer"],
                audience: _configuration["TokenConfiguration:Audience"],
                claims: claims,
                expires: expiration,
                signingCredentials: credentials);

            return(new UsuarioTokenDTO()
            {
                Authenticated = true,
                Token = new JwtSecurityTokenHandler().WriteToken(token),
                Expiration = expiration,
                Message = "Token JWT OK"
            });
        }
        public async Task <IActionResult> Registrar([FromBody] RegisterUsuarioInfoDto userInfo)
        {
            var user = new Usuario
            {
                UserName       = userInfo.UserName,
                Email          = userInfo.Email,
                EmailConfirmed = true,
                PasswordHash   = userInfo.Password
            };

            var result = await _userManager.CreateAsync(user, userInfo.Password);

            if (!result.Succeeded)
            {
                return(BadRequest(result.Errors));
            }

            await _signInManager.SignInAsync(user, false);

            var model = new LoginUsuarioInfoDto()
            {
                UserName = userInfo.UserName,
                Password = userInfo.Password
            };

            return(Ok(GeraToken(model)));
        }
        public async Task <IActionResult> Login([FromBody] LoginUsuarioInfoDto userInfo)
        {
            var result = await _signInManager.PasswordSignInAsync(userInfo.UserName,
                                                                  userInfo.Password, isPersistent : false, lockoutOnFailure : false);

            if (result.Succeeded)
            {
                return(Ok(GeraToken(userInfo)));
            }
            else
            {
                ModelState.AddModelError(string.Empty, "Login Inválido....");
                return(BadRequest(ModelState));
            }
        }