18/07/2008, 05:23
|
| | Fecha de Ingreso: diciembre-2007
Mensajes: 36
Antigüedad: 16 años, 11 meses Puntos: 0 | |
Respuesta: Duda sobre carpetas privadas Bueno vamos por partes a ver si esto te sirve, en el ejemplo que te pongo es un logueo atraves de formularios con las sesiones atraves de las cookies.
1 En el web config tienes que indicar desde que pagina se debe de loguear el usuario
<authentication mode="Forms">
<forms loginUrl="Donde hay que loguearse.aspx" name="AuthCookie" timeout="30" path="/"></forms>
</authentication>
Si te fijas ademas indicas el tiempo de finalizacion de sesión.
en el global asax has de añadir lo siguiente void Application_AuthenticateRequest(object sender, EventArgs e)
{//esto se ejecuta cada vez que entra a la pagina
//extraer la autenitcacion de la cookie
string cookieName = FormsAuthentication.FormsCookieName;
HttpCookie authCookie = Context.Request.Cookies[cookieName];
//comprobaciones de la cookie
if (null == authCookie)
{
return;//sale de la funcion, no devuelve nada
}
FormsAuthenticationTicket authTicket = null;
try
{
authTicket = FormsAuthentication.Decrypt(authCookie.Value);
}
catch (Exception ex)
{
//Fallo al desencriptar
return;
}
if (null == authTicket)
{
return;
}
//ya tenemos el ticket creado, le asignamos los roles del usuario
string[] roles = authTicket.UserData.Split(new char[] { '|' }); //split separa. Le hemos mandado "admin|private", pues coge y mete en una posicion de la tabla admin y en otra private
//crear el objeto identidad
FormsIdentity id = new FormsIdentity(authTicket);
System.Security.Principal.GenericPrincipal principal = new System.Security.Principal.GenericPrincipal(id,role s);
//añadir el objeto principal al actual hhttpcontext del usuario
Context.User = principal;
}
Te continuo en otro post para que te resulte mas facil de seguir |