2012-06-28 78 views
3

我试图记住我与会议,但我不能成功。首先是可能的?记住我与会话登录

中的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(); 
    } 

,但它不工作。

回答

11

为此目的,您不能使用Session。您应该使用Cookie来保存Remember Me状态。

+3

最后一些正确答案! –

+0

非常感谢,所以我会尝试使用cookies – calypso

-1

这样的变化。因为你正在检查价值。当空对象存在时,你不能访问ToString()方法。

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

那么也许string.IsNullOrEmpty更好? –

+3

-1,在会话中不存在的东西上调用'.ToString()'会抛出一个空引用异常。 –

+0

如果您调用ToString(),则永远不会有空值。 .net中的所有内容都有字符串表示。但要小心,不能在null上调用ToString()! – Nas

3

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

您不能使用会话对象,因为它会在用户不活动的一段时间后自动删除。

安全说明:以纯文本格式决不存储用户密码!

0

BTW:它是你最好创建具有​​两个属性emailpass用户类,并存储在一个会话元素:

User myUser = new User(); 
myUser.Email = "[email protected]"; 
myUser.Pass = "123456"; 

session["user"] = myUser; 

和您存储记住我一个cookie里面,有一些凭据高度加密或盐渍散列,所以当你的用户再次访问你匹配的名称和盐渍散列与你在数据库中的信息

+0

并且如果您希望来自会话的用户对象您使用User myUser = session [“user”]作为用户,然后检查myUser是否不为空 – JohnnBlade

+0

请使用适当的英语,即“你”和“你的”,而不是“你”和“你”/“年”。如果某人的英语不是很好,因为他不是母语,但这些聊天/短信快捷键在这里不受欢迎。 – ThiefMaster