コード例 #1
0
        public IActionResult Autenticar(Autenticador autenticador)
        {
            try
            {
                Usuario usuario = usuarioRepositorio.AutenticarPorBusca(autenticador);
                if (usuario == null)
                {
                    return(NotFound(new { mensagem = "A inspeção do usuário não fora efetivada com sucesso; depure as possíveis falhas de inscrição. " }));
                }

                var claims = new[] {
                    new Claim(JwtRegisteredClaimNames.Email, usuario.Email),
                    new Claim(JwtRegisteredClaimNames.Jti, usuario.IdUsuario.ToString()),
                    new Claim(ClaimTypes.Role, usuario.IdTipoUsuario.ToString())
                };

                var key = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes("opflix-chave-autenticacao"));

                var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

                var token = new JwtSecurityToken(
                    issuer: "Opflix.WebApi",
                    audience: "Opflix.WebApi",
                    claims: claims,
                    expires: DateTime.Now.AddMinutes(30),
                    signingCredentials: creds);

                return(Ok(new
                {
                    token = new JwtSecurityTokenHandler().WriteToken(token)
                }));
            } catch (Exception ex)
            {
                return(BadRequest(new
                {
                    Mensagem = "A autenticação não fora efetivada com sucesso; depure a existência de um mesmo item para a consignação inequívoca. " + ex.Message
                }));
            }
        }