0

我尝试用 cookie 记住我,但我无法成功。它会引发空引用异常。我该如何解决?

在页面加载方法中

   if (!string.IsNullOrEmpty(Request.Cookies["mail"].Value) && !string.IsNullOrEmpty(Request.Cookies["pass"].Value)) {

        TextBox1.Text = Request.Cookies["mail"].Value;

        TextBox2.Text = Request.Cookies["pass"].Value;}
    }

在 CheckedChanged 方法中

    if (CheckBox1.Checked == true)
    {
        Response.Cookies["mail"].Value = TextBox1.Text;
        Response.Cookies["pass"].Value = TextBox2.Text;
     }
4

1 回答 1

3

改变

if (!string.IsNullOrEmpty(Request.Cookies["mail"].Value) && 
    !string.IsNullOrEmpty(Request.Cookies["pass"].Value))

经过

if (Request.Cookies["mail"] != null && 
    Request.Cookies["pass"] != null &&
    !string.IsNullOrEmpty(Request.Cookies["pass"].Value)
    !string.IsNullOrEmpty(Request.Cookies["mail"].Value))

如果Request.Cookies["mail"]orRequest.Cookies["pass"]为空,您if将抛出您描述的异常。

另一个建议:如果您正在使用Forms Auhentication,您可以使用内置类来支持您的登录和相关功能。在安全方面重新发明轮子不是一个好的策略。

例如,我看到您将密码以纯文本形式存储在 cookie 中。这是一个非常糟糕的主意。

于 2012-06-28T12:37:12.530 回答