Foros del Web » Programando para Internet » ASPX (.net) »

Otra duda mas con la seguridad... - SOLUCIONADO

Estas en el tema de Otra duda mas con la seguridad... - SOLUCIONADO en el foro de ASPX (.net) en Foros del Web. Buenas de nuevo foreros... ESTO ME ESTÁ DESESPERANDO, jejeje Tengo en mi pagina agregado el control de Login que trae el VS. Y quiero hacer ...
  #1 (permalink)  
Antiguo 25/01/2009, 13:06
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Otra duda mas con la seguridad... - SOLUCIONADO

Buenas de nuevo foreros... ESTO ME ESTÁ DESESPERANDO, jejeje

Tengo en mi pagina agregado el control de Login que trae el VS. Y quiero hacer que al loguearse, se guarde un usuario en el Contexto de la aplicación.

Ok, eso lo hace perfecto, pero está logueando los datos que se metieron en la caja de texto del control... y no hace caso de la "personalizacion" que estoy intentando hacer yo, para guardar los datos que yo quiera en la cookie de autorizacion.

Es decir, en el evento de autenticacion del control tengo puesto:

Código:
        Login objLogin = (Login)sender;
        if (GetLogin(objLogin.UserName, objLogin.Password))
        {
            
            IIdentity objIdentidad = new System.Security.Principal.GenericIdentity("chankly");
            GenericPrincipal objPrincipal = new GenericPrincipal(objIdentidad, new string[] { "admin|usuario" });
            FormsAuthenticationTicket objTicket = new FormsAuthenticationTicket(1, "chankly", DateTime.Now, DateTime.Now.AddMinutes(20), false, "admin|usuario");
            string ticketEncriptado = FormsAuthentication.Encrypt(objTicket);
            HttpCookie objCookie = new HttpCookie(FormsAuthentication.FormsCookieName, ticketEncriptado);
            
            
            e.Authenticated = true;
            Response.Cookies.Add(objCookie);
        }
        else
        {

            e.Authenticated = false;
        }
Como pueden ver, primero llamo a GetLogin, que solo me devuelve true, ya que estoy haciendo pruebas.

Pero en la caja de texto del control, yo por ejemplo pongo en la caja de usuario y en la de clave: "Clavijo"

Y doy al boton para hacer el login. Y entramos en este evento que les puse.

Pues bien, como ven, estoy intentando poner, en la cookie de autenticacion otros datos que no tienen que ver con Clavijo. Estoy intentando crear un usuario con los roles de "admin|usuario" y meterlos en la cookie de autenticacion.

Para que despues en el Load, pueda recoger sus datos con: HttpContext.Current.User

Sin embargo... el usaurio que me aparece es "Clavijo", no "Chankly" y los roles me salen vacios.... ¿Por que puede ser esto?, ¿Al guardar la cookie en el evento, no tendría que guardarse con los datos que yo he creado previamente?

Agradezco las ayudas y comentarios... como pueden ver estoy muy perdido con esto, jejeje
__________________
Charlie.

Última edición por chcma; 25/01/2009 a las 14:50
  #2 (permalink)  
Antiguo 25/01/2009, 14:53
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Respuesta: Otra duda mas con la seguridad... - SOLUCIONADO

Haber... el control loguea en el evento que puse yo. Y despues ejecuta otro evento, que es donde mete el usuario y demás en el Context.

Entonces... yo estaba metiendo en el Contexto a mi usuario personalizado, pero como despues se ejecutaba el evento LoggedIn, pues entonces me sobreescribia lo que yo estaba poniendo.

Para solucionarlo:
Código:
    protected void Login1_Authenticate(object sender, AuthenticateEventArgs e)
    {
        Login objLogin = (Login)sender;
        if (GetLogin(objLogin.UserName, objLogin.Password))
        {
                        
            e.Authenticated = true;
        }
        else
        {
            e.Authenticated = false;
        }
    }



    protected void Login1_LoggedIn(object sender, EventArgs e)
    {
        IIdentity objIdentidad = new System.Security.Principal.GenericIdentity("chankly");
        GenericPrincipal objPrincipal = new GenericPrincipal(objIdentidad, new string[] { "admin|usuario" });
        FormsAuthenticationTicket objTicket = new FormsAuthenticationTicket(1, "chankly", DateTime.Now, DateTime.Now.AddMinutes(20), false, "admin|usuario");
        string ticketEncriptado = FormsAuthentication.Encrypt(objTicket);
        HttpCookie objCookie = new HttpCookie(FormsAuthentication.FormsCookieName, ticketEncriptado);

        HttpContext.Current.User = objPrincipal;
        Response.Cookies.Add(objCookie);
    }

Bueno... ahora solo me falta saber por que en el SiteMap no hace caso de mis roles y me muestra siempre todo...

Saludos.
__________________
Charlie.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:53.