🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: chile.comp.programacion
Article #1917

Re: Session Unica...

#1917
From: Pintamono
Date: Tue, 09 May 2006 13:48
76 lines
3696 bytes
Se genera un SortedList en el cual se graba el ID del usuario y la hora
en que ingreso, este sortedlist se guarda en Application para queeste
disponible para todos los usuarios, luego cuando alguien quiere ingrsar
al sistema se recupera el sortedlist y se busca a el usuario que
intenta ingresar, si existe se le indica que no puede ingresar y si no
existe se agrega al sortedlist y se vuelve a dejar en Application.
El codigo es como se muestra a continuacion.

En el Global.asax coloque esto:
protected void Application_Start(Object sender, EventArgs e)
		{
			SortedList lista = new SortedList();
			Application.Lock();
			Application["USUARIOS"]= lista;
			Application.UnLock();
			lista = null;
		}

Voy a aprovechar

protected void Application_PreRequestHandlerExecute(Object sender,
EventArgs e)
{ }
para calcular el tiempo que lleva activa la session.

Luego en la pagina de login hago lo siguiente:

if (Sesion.Autentificar(Username,Password,TipoAutenticacion.Form))
			{
				FormsAuthentication.RedirectFromLoginPage(Sesion.ID.ToString(),false);

				Session["IDUsuario"]=Sesion.ID;

				SortedList m = (SortedList)Application["USUARIOS"];
				if (!m.ContainsKey(Convert.ToInt64(Session["IDUsuario"])))
				{
					m.Add(Sesion.ID,DateTime.Now.Ticks.ToString());
					Application.Lock();
					Application["USUARIOS"] = m;
					Application.UnLock();
				}
				else
				{
					Session["Error"]= "Lo Siento, este usuario ya se encuentra
autenticado";
					FormsAuthentication.SignOut();
				}
			}
			else
			{
				lblError.Text="";
				WriteScriptLoad("alert('Login o Password incorrectos')");
			}

Esto me permite que no puedan ingresar al sistema dos personas con las
misma cuenta de usuario.

funciona re bien excepto cuando se termina la session o se pincha el
boton X ya que para terminar tengo el siguiente codigo en el boton
salir de la botonera:

SortedList m = (SortedList) Application["USUARIOS"];
						if (m.ContainsKey(Convert.ToInt64(Session["IDUsuario"])))
						{
							m.Remove(Convert.ToInt64(Session["IDUsuario"]));
							Application.Lock();
							Application["USUARIOS"]=m;
							Application.UnLock();

						}
						m=null;
Y si pasan esos dos eventos mecionados anteriormente no elimina del
sortedlist el usuario y cuando quiere volver a ingresar le dice que ya
se encuentra conectado.

Esa es la solucion que casi me funciona hasta ahora...
Technical Details
Message-ID: <1147182526.797882.275760@j73g2000cwa.googlegroups.com>
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!j73g2000cwa.googlegroups.com!not-for-mail
References: <1146843706.066639.266030@y43g2000cwc.googlegroups.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: 1593cb,1791e85539ae80f6
X-Google-Attributes: gid1593cb,public
X-Google-Language: SPANISH,ASCII-7-bit
Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!j73g2000cwa.googlegroups.com!not-for-mail
From: "Pintamono" <pintamono79@yahoo.es>
Newsgroups: chile.comp.programacion
Subject: Re: Session Unica...
Date: 9 May 2006 06:48:46 -0700
Organization: http://groups.google.com
Lines: 77
Message-ID: <1147182526.797882.275760@j73g2000cwa.googlegroups.com>
References: <1146843706.066639.266030@y43g2000cwc.googlegroups.com>
NNTP-Posting-Host: 200.27.140.110
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
X-Trace: posting.google.com 1147182534 4619 127.0.0.1 (9 May 2006 13:48:54 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Tue, 9 May 2006 13:48:54 +0000 (UTC)
In-Reply-To: <1146843706.066639.266030@y43g2000cwc.googlegroups.com>
User-Agent: G2/0.2
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.2; es-AR; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3,gzip(gfe),gzip(gfe)
X-HTTP-Via: 1.1 SRV-FIREWALL
Complaints-To: groups-abuse@google.com
Injection-Info: j73g2000cwa.googlegroups.com; posting-host=200.27.140.110;
   posting-account=skJ50Q0AAACOrmQ9kj5c1tjv36P849np