C# 使用会话登录时记得我吗

C# 使用会话登录时记得我吗,c#,asp.net,session,C#,Asp.net,Session,我试着用session来记住我,但没有成功。首先,这可能吗 在CheckedChanged方法中 if (CheckBox1.Checked) { Session["email"] = TextBox1.Text; Session["pass"] = TextBox2.Text; } 页面加载法 if (Session["email"].ToString() !=null && Session["pass"]

我试着用session来记住我,但没有成功。首先,这可能吗

在CheckedChanged方法中

     if (CheckBox1.Checked)
    {
        Session["email"] = TextBox1.Text;
        Session["pass"] = TextBox2.Text;

    }
页面加载法

     if (Session["email"].ToString() !=null && Session["pass"].ToString() !=null)
    {
       TextBox1.Text = Session["email"].ToString();
        TextBox2.Text = Session["pass"].ToString();
    }

但是它不起作用。

像这样改变。当您检查值时。当存在null对象时,无法访问ToString()方法

if (!string.IsNullOrEmpty(Session["email"]) && string.IsNullOrEmpty(Session["pass"])) )
 // then do with session objects. 

您不能为此目的使用
会话
。您必须使用
Cookie
保存
记住我
状态

通过使用持久cookie实现“记住我”功能

您不能使用会话对象,因为它将在用户处于某个不活动状态后自动删除


安全说明从不以明文格式存储用户密码

顺便说一句:最好创建一个具有两个属性的用户类
email
pass
,并将其存储在一个会话元素中:

User myUser = new User();
myUser.Email = "test@test.com";
myUser.Pass = "123456";

session["user"] = myUser;

您将“记住我”存储在一个cookie中,其中包含一些经过高度加密或盐渍哈希的凭据,因此当您的用户再次访问时,您可以将名称和盐渍哈希与数据库中的信息进行匹配

,那么string.IsNullOrEmpty可能更好?-1,调用
.ToString()
对于会话中不存在的内容,将抛出空引用异常。如果调用ToString(),则永远不会有空值。net中的所有内容都有字符串表示。但是要小心,不能在null上调用ToString()@JamesHill将检查更新的答案,即使我在答案中提到。@Ravi,您更新的代码仍然不允许会话中不存在
电子邮件
通行证
。在你
.ToString()
它之前,你是否应该检查它是否存在?如果你想从会话中获取用户对象,你可以使用user myUser=session[“user”]作为用户,然后检查myUser是否为空。请使用正确的英语,即“you”和“your”,而不是“u”和“ur”/“yr”。如果某人的英语不是很好,因为他不是以英语为母语的人,那也没关系,但是这些聊天/发短信风格的快捷方式在这里并不受欢迎。