c# - Cómo obtener el valor de la cookie en el sitio web asp.net
cookies forms-authentication (4)
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 usando vs 2010 con c #
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 el nombre como .YAFNET_Authentication y el contenido está encriptado
Webconfig:
<forms name=".YAFNET_Authentication" loginUrl="Home.aspx"
protection="All" timeout="15000" cookieless="UseCookies"/>
FormsAuthentication.Decrypt toma el valor real de la cookie, no su nombre. Puedes obtener el valor de la cookie como
HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Value;
y descifrar eso.
Puede usar la colección Request.Cookies para leer las cookies.
if(Request.Cookies["key"]!=null)
{
var value=Request.Cookies["key"].Value;
}
agregue 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;
}
luego puede usar HttpContext.Current.User.Identity.Name para obtener el nombre de usuario. Espero eso ayude
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 Haga clic aquí