asp.net中的cookie和会话

本文关键字:会话 cookie 中的 net asp | 更新日期: 2023-09-27 18:05:55

我正在创建一个登录,并使用以下代码将用户详细信息存储在cookie中

if (ValidateUser(txtUserName.Value,txtUserPass.Value) )
{
   //string useremail = Convert.ToString(txtUserName.Value);
   Session.Add("useremail", txtUserName.Value);
   FormsAuthenticationTicket tkt;
   string cookiestr;
   HttpCookie ck;
   tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now, 
     DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data");
   cookiestr = FormsAuthentication.Encrypt(tkt);
   ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
   if (chkPersistCookie.Checked)
     ck.Expires=tkt.Expiration; 
   ck.Path = FormsAuthentication.FormsCookiePath; 
   Response.Cookies.Add(ck);
}

我也正在创建一个会话会话。Add("useremail txtUserName.Value);身份验证成功后,它被重定向到user.aspx我想在用户中读取useremail值。但是当我试图访问用户页中的值时,它没有显示useremail字段。

protected void Page_Load(object sender, EventArgs e)
    {
        if
            (Session["useremail"] == null) Response.Redirect("Home.aspx");
        else
            BindGridView(useremail);
    }

这是我的webconfig:

<authentication mode="Forms"><forms name=".YAFNET_Authentication" loginUrl="Home.aspx" protection="All" timeout="43200" cookieless="UseCookies"/></authentication>
如果我做错了什么请纠正我。也请告诉我如何传递useremail值给用户。这样我就可以把这个值传递给gridview函数

asp.net中的cookie和会话

把它改成

protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["useremail"] == null)
            Response.Redirect("Home.aspx");
        else
            BindGridView((string)Session["useremail"]);
    }

您可以像这样添加一个对象到会话状态:

Session["useremail"] = "john.smith@microsoft.com";

然后您可以通过以下方式检索它:

var useremail = Session["useremail"] ?? null;
if (useremail == null)
{
   //...
}
else
{
    BindGridView(useremail);
}

如果会话状态中不存在useremail项,则useremail变量将被设置为null,否则它将包含电子邮件地址

您正在混淆身份验证,会话状态和cookie之间的关系。在ASP。. NET、Session State和Forms Authentication没有链接,也就是说它们的作用域是不同的。您可以为未经身份验证的用户设置一些会话状态。会话和表单身份验证使用不同的cookie进行跟踪,cookie管理或多或少是自动的,您不需要像以前那样编写代码来管理它。此外,您在cookie中存储的内容与会话状态中的内容无关。在没有cookie的情况下,也可以同时使用会话和表单认证。因此,下面的代码应该适用于会话状态

Session["key"] = "put your data here";
// retrieve the data elsewhere
var data = Session["key"];