Работа с файлами cookie в IE и Firefox - PullRequest
0 голосов
/ 03 мая 2011

У меня есть приложение, которое создает cookie, когда пользователь входит в приложение. Затем cookie читается на последующих страницах, и пользователю разрешается продолжать обработку на этих страницах, если они вошли в систему (cookie существует). Когда я запускаю свое приложение в IE 8.0, cookie-файл реагирует так, как я ожидаю. Когда я запускаю свое приложение через VS2008, cookie отвечает, как я ожидаю. Когда я запускаю свое приложение в Firefox 4.0, файл cookie недействителен на моей следующей странице.

Вот настройка кода моего печенья

protected void btnLogin_Click(object sender, EventArgs e)
{
    if (CheckFields())
    {
        string strSQL;
        sqlUserInfo.SelectParameters.Clear();
        strSQL = "SELECT FirstName, LastName, Email FROM UserInfo WHERE Email=@email AND Password=@password";
        sqlUserInfo.SelectCommand = strSQL;
        if (txtEmail.Text != "")
        {
            sqlUserInfo.SelectParameters.Add("email", txtEmail.Text);
            sqlUserInfo.SelectParameters.Add("password", txtPassword.Text);
            DataView dv = (DataView)sqlUserInfo.Select(DataSourceSelectArguments.Empty);
            if (dv.Table.Rows.Count > 0)
            {
                string welcomeMsg = "Welcome back " + dv[0][0] + " " + dv[0][1] + "!";
                HttpCookie cookie = new HttpCookie("Email");
                cookie.Value = txtEmail.Text;

                DateTime dtNow = DateTime.Now;
                Response.Cookies.Add(cookie);

                lblMenu.Text = welcomeMsg + "&nbsp;&nbsp;&nbsp; <a href='AcctInfo.aspx'>Update Account Info</a>&nbsp;&nbsp;&nbsp;<a href='TextAlerts.aspx'>Create/Update Text Alerts</a>&nbsp;&nbsp;&nbsp;<a href='graphSetup.aspx'>Graphing</a>";
                lblMessage.Text = "";
                btnLogin.Enabled = false;
                btnLogoff.Enabled = true;
            }
            else
            {
                lblMessage.Text = "Login Unsuccessful";
            }
        }
    }
}

Вот мой код для загрузки моей следующей страницы, который является acctinfo.aspx.cs

 protected void Page_Load(object sender, EventArgs e)
    {
        cookie = Request.Cookies["Email"];
        if (cookie == null)
        {
            lblMessage.Text = "Not logged in. <a href='login.aspx'>Login</a>";
            lbLogoff.Visible = false;
        }
        else
        {
            EnableControls();
            string strSQL;

            sqlUserInfo.SelectParameters.Clear();
            strSQL = "SELECT FirstName, LastName, Email, Password, PhoneNumber, Provider FROM UserInfo WHERE Email=@email";
            sqlUserInfo.SelectCommand = strSQL;
            sqlUserInfo.SelectParameters.Add("email", cookie.Value.ToString());
            DataView dv = (DataView)sqlUserInfo.Select(DataSourceSelectArguments.Empty);
            if (dv.Table.Rows.Count > 0)
            {
                oldPass = dv[0][3].ToString();
                oldPhone = dv[0][4].ToString();
                oldProvider = dv[0][5].ToString();
                if (!IsPostBack)
                {
                    txtPassword.Text = oldPass;
                    txtPassword2.Text = oldPass;
                    txtPhone.Text = oldPhone;
                    lstProvider.SelectedValue = oldProvider;
                    strMenu = "Welcome " + dv[0][0].ToString() + " " + dv[0][1].ToString() + "&nbsp;&nbsp;&nbsp;<a href='TextAlerts.aspx'>Create/Update Text Alerts</a>&nbsp;&nbsp;&nbsp;<a href='graphSetup.aspx'>Graphing</a>&nbsp;&nbsp;&nbsp;";
                    lblMenu.Text = strMenu;
                }
            }
        }
    }

Cookies включены в Firefox, потому что я могу удалить код, который сохраняет куки из файла, в котором он находится, поместить его в отдельный файл, просмотреть этот файл, а затем просмотреть мой AcctInfo, и он работает, как и ожидалось.

Любая помощь будет принята с благодарностью.

Спасибо!

Ответы [ 2 ]

1 голос
/ 03 мая 2011

Используйте Fiddler или другой Http наблюдатель, чтобы увидеть, что на самом деле отправляется в / из браузера.Сам код выглядит нормально.

0 голосов
/ 03 мая 2011

Похоже, что срок действия файла cookie истекает, попробуйте код ниже

HttpCookie cookie = new HttpCookie("Email"); 
        cookie.Value = txtEmail.Text;

        DateTime dtNow = DateTime.Now;
        cookie.Expires = DateTime.Now.AddYears(1);
        Response.Cookies.Add(cookie);
...