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

但它不起作用。

4

4 回答 4

11

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

于 2012-06-28T11:50:49.357 回答
3

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

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

安全注意事项切勿以明文格式存储用户密码!

于 2012-06-28T11:53:13.963 回答
0

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

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

session["user"] = myUser;

并且您将记住我存储在cookie 中,并使用一些高度加密或加盐散列的凭据,因此当您的用户再次访问时,您将名称和加盐散列与您在数据库中的信息相匹配

于 2012-06-28T11:56:03.883 回答
-1

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

if (!string.IsNullOrEmpty(Session["email"]) && string.IsNullOrEmpty(Session["pass"])) )
 // then do with session objects. 
于 2012-06-28T11:49:34.417 回答