У меня есть относительно простое приложение ASP.Net, в которое я встроил некоторую упрощенную защиту. Пользователь входит в систему с именем пользователя и паролем, и я проверяю его по БД. В случае успеха я сохраняю для них объект User в переменной сеанса с именем «UserID» и перенаправляю их на ту же страницу, только на этот раз они не видят панель входа в систему. (Ммм может просто скрыть это динамически, но я думаю, что в любом случае это приведет к перезагрузке страницы)
На моей странице Default.aspx у меня есть следующий код:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserID"] == null)
{
LoginPanel.Visible = true;
}
}
protected void btnLogin_Click(object sender, EventArgs e)
{
Security security = new Security();
Session["UserID"] = security.LoginUser(txtUsername.Text, txt2Password.Value);
if (Session["UserID"] != null)
{
Response.Redirect("~/default.aspx");
}
}
Хорошо, пока все хорошо. Также стоит упомянуть главную страницу:
protected void Page_Load(object sender, EventArgs e)
{
if (Session["UserID"] == null)
{
//Check that we are not already on the default.aspx page.
//Don't want to cause infinite redirect here
if (!Request.Path.ToLower().Contains("default.aspx"))
{
Page.Response.Redirect("~/Default.aspx");
}
}
else
{
//Otherwise we get the UserObject from the session and display menu items //based on the role. Nothing fancy.
}
}
//Bad naming. This a logout link on the master...
protected void Unnamed1_Click(object sender, EventArgs e)
{
Session["UserID"] = null;
Page.Response.Redirect("~/Default.aspx");
}
Теперь все это прекрасно работает на моем локальном экземпляре IIS. Как только я разверну это на нашем производственном сервере и нажму на один из пунктов моего меню и перейду, скажем, к Search.aspx, он вернется ко мне на страницу Default.aspx с видимой панелью LoginPanel ??? Также это в Firefox. С помощью IE я могу щелкнуть ссылку меню Search.aspx, и она переместится на страницу, но щелкнув ссылку редактирования в моем GridView, я также вернусь на страницу Default.aspx с отображением LoginPanel.
Я вообще не эксперт по ASP.net и остроумен. Поэтому, пожалуйста, напишите «Ответы» с как можно меньшим жаргоном и т. Д. И опубликуйте ссылки на msdn для документов и так далее, чтобы я не просто решил эту проблему, а понял, почему это вызывает у меня кошмары.
ТИА