Asp.Net 4 Response.Cookies.Add不向用户机器添加cookie

时间:2011-08-11 11:50:17

标签: asp.net forms-authentication

我正在尝试使用ASP.NET 4设置基本的表单身份验证。

我知道我的验证码(检查用户名和密码是否正确的代码)正在运行,因为如果用户输入无效信息,则ReturnLable会告诉他们。但是,如果他们输入正确的信息,则会将其重定向到受限制的页面,并显示403 - Forbidden错误。当我检查shell时:cookie路径没有写入cookie,即使我已将其添加到集合“Response.Cookies.Add(cookie);”

protected void Submit_Click(object sender, EventArgs e)
{
    Email.Text = Email.Text.Trim();
    Password.Text = Password.Text.Trim();
    if (IsValid(Email.Text, Password.Text)) //user exists
    {
        FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
            1,
            Email.Text,
            DateTime.Now,
            DateTime.Now.AddMinutes(50),
            RememberMe.Checked,
            "user",
            FormsAuthentication.FormsCookiePath);
        string hashCookies = FormsAuthentication.Encrypt(ticket);
        HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, hashCookies);

        Response.Cookies.Add(cookie);
}
    else
    {
        ReturnLable.Text = "<font color=red> Username/Password Incorrect Please Try Again </font>";
        ReturnLable.Visible = true;
    }

2 个答案:

答案 0 :(得分:5)

来自this MSDN article

  

如果您没有设置cookie的过期时间,则会创建cookie   它不存储在用户的硬盘上。相反,cookie是   作为用户会话信息的一部分进行维护。当用户   关闭浏览器或如果会话超时,cookie就是   丢弃。

因此,cookie可以在浏览器中成功设置,活着并且很好,但在硬盘驱动器上的“cookies”文件夹中没有相应的文件。

答案 1 :(得分:0)

确保在IIS上禁用“启用匿名访问”并启用集成Windows安全性