protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) { HttpStatusCode statusCode; string token; HttpResponseMessage respuesta = new HttpResponseMessage(); Models.RespuestaAPI <string> respuestaApi = new Models.RespuestaAPI <string>(); // determine whether a jwt exists or not if (!TryRetrieveToken(request, out token)) { statusCode = HttpStatusCode.Unauthorized; return(base.SendAsync(request, cancellationToken)); } try { // Extract and assign Current Principal and user Thread.CurrentPrincipal = getClaimData(token); HttpContext.Current.User = getClaimData(token); return(base.SendAsync(request, cancellationToken)); } catch (SecurityTokenValidationException) { statusCode = HttpStatusCode.Unauthorized; respuestaApi = new RespuestaAPI <string>() { respuesta = RespuestaAPI <string> .nombreRespuesta(eRespuestas.Unauthorized), resultado = "" }; } catch (Exception) { statusCode = HttpStatusCode.InternalServerError; respuestaApi = new RespuestaAPI <string>() { respuesta = RespuestaAPI <string> .nombreRespuesta(eRespuestas.InternalServerError), resultado = "" }; } //Devolvemos algún error en la respuesta var jsonString = JsonConvert.SerializeObject(respuestaApi); var content = new StringContent(jsonString, Encoding.UTF8, "application/json"); respuesta.Content = content; respuesta.StatusCode = statusCode; return(Task <HttpResponseMessage> .Factory.StartNew(() => respuesta)); }
public IHttpActionResult Authenticate(LoginRequest login) { if (login == null) { throw new HttpResponseException(HttpStatusCode.BadRequest); } if (isCredentialValid(login.Username, login.Password)) { var token = TokenGenerator.GenerateTokenJwt(login.Username); return(Ok(new RespuestaAPI <string>() { respuesta = RespuestaAPI <string> .nombreRespuesta(eRespuestas.OK), resultado = token })); } else { return(Ok(new RespuestaAPI <string>() { respuesta = RespuestaAPI <string> .nombreRespuesta(eRespuestas.Unauthorized), resultado = "" })); } }