C# 使用会话登录时记得我吗
我试着用session来记住我,但没有成功。首先,这可能吗 在CheckedChanged方法中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"]
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”。如果某人的英语不是很好,因为他不是以英语为母语的人,那也没关系,但是这些聊天/发短信风格的快捷方式在这里并不受欢迎。