Advertisement
panxop

Untitled

Apr 26th, 2018
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.82 KB | None | 0 0
  1. //clase Validasesion.cs
  2.  
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Web;
  7.  
  8. [Serializable]
  9. public class ValidaSesion
  10. {
  11.     public void registrarSesion(HttpContext contexto, string nombreusuario)
  12.     {
  13.         TimeSpan TimeOut = new TimeSpan(0, 0, contexto.Session.Timeout, 0, 0);
  14.         nombreusuario = nombreusuario.Trim();
  15.         if (contexto.Cache(nombreusuario) == null)
  16.             contexto.Cache.Insert(nombreusuario, contexto.Session.SessionID, null /* TODO Change to default(_) if this is not a reference type */, DateTime.Now.AddMinutes(contexto.Session.Timeout), System.Web.Caching.Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.NotRemovable, null /* TODO Change to default(_) if this is not a reference type */);
  17.         contexto.Session("nombreusuario") = nombreusuario;
  18.     }
  19.  
  20.     public bool HayConcurrencia(HttpContext contexto)
  21.     {
  22.         bool result = false;
  23.         if (contexto.Session != null)
  24.             if (contexto.Session("nombreusuario") != null)
  25.             {
  26.                 string cacheKey = contexto.Session("nombreusuario").ToString();
  27.                 result = (System.Convert.ToString(contexto.Cache(cacheKey)) != contexto.Session.SessionID);
  28.                 if (!result)
  29.                     string user = System.Convert.ToString(contexto.Cache(cacheKey));
  30.             }
  31.  
  32.         return result;
  33.     }
  34.  
  35.     public void EliminarRegistro(HttpContext contexto)
  36.     {
  37.         if (contexto.Session("nombreusuario") != null)
  38.             contexto.Cache.Remove(contexto.Session("nombreusuario").ToString());
  39.     }
  40. }
  41.  
  42. //llamado a la clase para agregar a variable context cache en Servidor IIS y validar si ya existe en el sistema.
  43.  
  44.    ValidaSesion Sesiones = new ValidaSesion();
  45.             ValidaSesion clase = new ValidaSesion();
  46.             Sesiones.registrarSesion(HttpContext.Current, TxtUsr.Text);
  47.             if (clase.HayConcurrencia(HttpContext.Current))
  48.             {
  49.                 FormsAuthentication.SignOut();
  50.                 Session.Clear();
  51.                 Response.Redirect("/Administracion/Mantencion/UsuarioEnSistema.aspx", true);
  52.             }
  53.  
  54. //script para limpiar la sesion cuando se cierra la pestaña o navegador (revisar porque no funciona)
  55.  
  56.  
  57.  
  58.         function PageMethod(methodName, onSuccess, onFail) {
  59.             var args = '';
  60.             var l = arguments.length;
  61.  
  62.             if (l > 3) {
  63.                 for (var i = 3; i < l - 1; i += 2) {
  64.                     if (args.length != 0) args += ',';
  65.                     args += '"' + arguments[i] + '":"' + arguments[i + 1] + '"';
  66.                 }
  67.             } //if.
  68.             var loc = window.location.href;
  69.  
  70.             loc = (loc.substr(loc.length - 1, 1) == "/") ? loc + "default.aspx" : loc;
  71.             $.ajax({
  72.                 type: "POST",
  73.                 url: loc + "/" + methodName,
  74.                 data: "{" + args + "}",
  75.                 contentType: "application/json; charset=utf-8",
  76.                 dataType: "json",
  77.                 success: onSuccess,
  78.                 fail: onFail
  79.             });
  80.         } //End function.
  81.  
  82.         function SalirAplicacion() {
  83.             if (event.clientY < 0) {
  84.                 PageMethod("LiberarSesion", function (response) { var a = 2; }, function (response) {
  85.                     alert("Existe un error de conexión, la sesión no se descargo correctamente. Contacte a soporte técnico.");
  86.                 });
  87.             } //fin de if.
  88.         } //function.
  89.         window.onbeforeunload = SalirAplicacion;
  90.  
  91. //Web metod para llamar al javascript anterior
  92.  
  93. [WebMethod()]
  94. public static void LiberarSesion()
  95. {
  96.     ValidaSesion clase = new ValidaSesion();
  97.     clase.EliminarRegistro(HttpContext.Current);
  98. }
  99.  
  100. //Para liberar la sesion se debe llamar al metodo dentro del webmetod LiberarSesion()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement