public ActionResult Failed() { clsModelLoginMensaje model = new clsModelLoginMensaje(); model.Mensaje = Session["UsrUltMensaje"].ToString(); return(View(model)); }
public HttpResponseMessage ValidaAccesoWeb(List <clsModelLoginValidaWeb> pdatos) { HttpResponseMessage respuesta = new HttpResponseMessage(); // =============================================================================== // Para leer el TokenKey // =============================================================================== // https://www.guidgenerator.com/online-guid-generator.aspx clsTokenKey TokenKeyUtil = new clsTokenKey(); var headers = Request.Headers; string TokenKey = ""; if (headers.Contains("TokenKey")) { TokenKey = headers.GetValues("TokenKey").First(); } if (TokenKey.Length == 0) { return(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Token Key Missing")); } if (!TokenKeyUtil.fnGetTokenKeyValido(TokenKey)) { return(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Token Key Invalid or Inactive")); } // =============================================================================== List <clsModelLoginMensaje> lResult = new List <clsModelLoginMensaje>(); try { string Usuario = pdatos[0].Usuario; string Token = pdatos[0].Token; string Opcion = pdatos[0].Opcion; string[] arrOpc = Opcion.Split('|'); // Desencripta el token y valida que la primera parte // sea el usuario, la segunda la llave que esta en // el web config del api // con el usuario lo compara con el usuario que se recibe // opcion trae en un split el nombre del controlador y la accion para // buscarlo en la tabla de seguridad string EncKeyBase = ""; string CodigoModulo = ""; EncKeyBase = ConfigurationManager.AppSettings["enc_key_base"].ToString(); CodigoModulo = ConfigurationManager.AppSettings["Codigo_Modulo"].ToString(); clsEncryption enc = new clsEncryption(EncKeyBase); Token = enc.fnGetDecrypt(Token); string[] arr = Token.Split('|'); if (arr.Length != 3) { // longitud de token inválida respuesta = Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Token Inválido L!=3"); } else { if (Usuario != arr[0]) { // la primera parte del token no es igual al usuario respuesta = Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Token Inválido L0!=USR"); } else { if (EncKeyBase != arr[1]) { // la segunda parte del token no es la llave respuesta = Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Token Inválido L1!=KEY"); } else { // valida acceso a la opcion if (fnGetUsuarioConAcceso(Usuario, CodigoModulo, arrOpc[0], arrOpc[1])) { clsModelLoginMensaje Mensaje = new clsModelLoginMensaje(); Mensaje.Mensaje = "Token Válido"; lResult.Add(Mensaje); respuesta = Request.CreateResponse(HttpStatusCode.OK, lResult); } else { respuesta = Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Token Inválido L3!=OPC"); } } } } } catch (Exception ex) { respuesta = Request.CreateErrorResponse(HttpStatusCode.Conflict, ex.Message.ToString() + ' ' + ex.InnerException.Message.ToString()); } return(respuesta); }