2011-12-13 10 views
25

Estoy creando una cookie y almacenando el valor de nombre de usuario después de un inicio de sesión exitoso. ¿Cómo puedo acceder a la cookie cuando se abre el sitio web? Si la cookie existe, quiero llenar el cuadro de texto de nombre de usuario del valor de la cookie. Y cómo descifrar el valor para obtener el nombre de usuario. Estoy haciendo la validación del lado del servidor obteniendo los detalles de usuario de la base de datos. Estoy utilizando vs 2010 con C#Cómo obtener el valor de cookie en el sitio web asp.net

FormsAuthenticationTicket tkt; 
string cookiestr; 
HttpCookie ck; 
tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now, 
    DateTime.Now.AddYears(1), chk_Rememberme.Checked, "User Email"); 
cookiestr = FormsAuthentication.Encrypt(tkt); 
ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr); 

if (chk_Rememberme.Checked) 
{ 
    ck.Expires = tkt.Expiration; 
    ck.Path = FormsAuthentication.FormsCookiePath; 
    Response.Cookies.Add(ck); 
} 

cookie se crea con nombre como .YAFNET_Authentication y el contenido está cifrado

Webconfig:

<forms name=".YAFNET_Authentication" loginUrl="Home.aspx" 
    protection="All" timeout="15000" cookieless="UseCookies"/> 

Respuesta

57

Es posible utilizar Request.Cookies colección de leer las cookies.

if(Request.Cookies["key"]!=null) 
{ 
    var value=Request.Cookies["key"].Value; 
} 
13

FormsAuthentication.Decrypt toma el valor real de la galleta, no el nombre de la misma. Puede obtener el valor de cookie como

HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Value; 

y descifrar eso.

7

añadir esta función a su global.asax

protected void Application_AuthenticateRequest(Object sender, EventArgs e) 
{ 
    string cookieName = FormsAuthentication.FormsCookieName; 
    HttpCookie authCookie = Context.Request.Cookies[cookieName]; 

    if (authCookie == null) 
    { 
     return; 
    } 
    FormsAuthenticationTicket authTicket = null; 
    try 
    { 
     authTicket = FormsAuthentication.Decrypt(authCookie.Value); 
    } 
    catch 
    { 
     return; 
    } 
    if (authTicket == null) 
    { 
     return; 
    } 
    string[] roles = authTicket.UserData.Split(new char[] { '|' }); 
    FormsIdentity id = new FormsIdentity(authTicket); 
    GenericPrincipal principal = new GenericPrincipal(id, roles); 

    Context.User = principal; 
} 

entonces se puede utilizar para obtener HttpContext.Current.User.Identity.Name nombre de usuario. creo que sirve

0
HttpCookie cook = new HttpCookie("testcook"); 
cook = Request.Cookies["CookName"]; 
if (cook != null) 
{ 
    lbl_cookie_value.Text = cook.Value; 
} 
else 
{ 
    lbl_cookie_value.Text = "Empty value"; 
} 

Referencia Click here

Cuestiones relacionadas