public async Task <ActionResult> Login(dateUsersModels ObjUser) { if (!ModelState.IsValid) { return(View(ObjUser)); } API_Control Service = new API_Control(); HttpResponseMessage response = await Service.ApiLogin(ObjUser); if (response != null) { switch (response.StatusCode) { case System.Net.HttpStatusCode.NoContent: ModelState.AddModelError("", "El usuario no se encuentra registrado en la aplicación"); return(View(ObjUser)); case System.Net.HttpStatusCode.Unauthorized: ModelState.AddModelError("", "No esta autorizado para ingreso en la aplicación"); return(View(ObjUser)); case System.Net.HttpStatusCode.OK: var jsonUser = await response.Content.ReadAsStringAsync().ConfigureAwait(false); List <loginUserDTO> logueado = JsonConvert.DeserializeObject <List <loginUserDTO> >(jsonUser); if (logueado.First()._IsActive == false) { ModelState.AddModelError("", "El usuario no se encuentra activo"); return(View(ObjUser)); } else { FormsAuthentication.SetAuthCookie(logueado.First()._UserStr, false); Session["USER"] = logueado.First()._UserStr; HttpHeaders headers = response.Headers; IEnumerable <string> values; if (headers.TryGetValues("token", out values)) { Session["Token"] = values.First(); } return(RedirectToLocal()); } default: ModelState.AddModelError("", "Ha ocurrido un error en la autenticación, contacte al administrador"); return(View()); } } else { return(View()); } }
/// <summary> /// Metodo de autenticacion que recibe objeto modelo con los datos de autenticacion /// </summary> /// <param name="userDate"></param> /// <returns>HttpResponseMenssaje con respuesta de acceso a la aplicacion</returns> public async System.Threading.Tasks.Task <HttpResponseMessage> ApiLogin(dateUsersModels userDate) { try { using (var client = new HttpClient()) { client.BaseAddress = new Uri(baseUrl); client.DefaultRequestHeaders.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); StringContent content = new StringContent(JsonConvert.SerializeObject(userDate), Encoding.UTF8, "application/json"); HttpResponseMessage response = await client.PostAsync(serviceUrl.loginService, content); return(response); } } catch (Exception e) { //Se debe crear un metodo para registrar en log la excepcion throw e; } }