Я реализую Forms Authentication
в ASP.NET с C# (версия 3).Аутентификация форм ASP.NET аутентифицируется на сервере localhost, но не на веб-сервере
Я создал простую форму для входа, когда пароли пользователей & хранятся в моем SQL-db.
Когда я вхожу в систему на своем локальном хосте, все работает нормально, но когда я опубликовал проект и загрузил его на свой веб-сервер, все стало для меня немного странным.
Возвращаемое значение переменной HttpContentxt.Current.User.Identity.IsAuthenticated
ложно, даже если логин был успешным (и снова в локальном хосте все работает нормально).
Это следующая кнопка Войти код нажмите (Я использую свой собственный DATAACCESS, игнорировать это ненужный код):
protected void btnLogin_Click(object sender, EventArgs e)
{
Page.Validate("Login");
if (Page.IsValid)
{
string email = txtEmail.Text;
string passwd = FormsAuthentication.HashPasswordForStoringInConfigFile(txtPassword.Text, "MD5");
WebFactory.DataAccess.Users.Data userData = new WebFactory.DataAccess.Users.Data(ConnectionString);
userData.Load(new WebFactory.DataAccess.Users.Item[] {
new WebFactory.DataAccess.Users.Item(WebFactory.DataAccess.Users.Columns.Email, email),
new WebFactory.DataAccess.Users.Item(WebFactory.DataAccess.Users.Columns.Password, passwd)
});
if (userData.HasData) // Login Success
{
if (!cbRememberMe.Checked)
{
FormsAuthentication.SetAuthCookie(userData.Id.ToString(), false);
}
else
{
FormsAuthentication.Initialize();
DateTime expires = DateTime.Now.AddDays(20);
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,
userData.Id.ToString(),
DateTime.Now,
expires,
true,
String.Empty,
FormsAuthentication.FormsCookiePath);
string encryptedTicket = FormsAuthentication.Encrypt(ticket);
HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
authCookie.Expires = expires;
Response.Cookies.Add(authCookie);
}
lblStatus.Text = "";
if (Common.QS.HasRefUrl)
{
Response.Redirect(Common.QS.RefUrl);
}
else
{
Common.UserTools.RedirectLoggedInUser(userData.Id);
}
}
else // Login failed
{
lblStatus.Text = "Email or password is wrong. please try again."
}
}
}
Спасибо за все хелпер, и жаль английских ошибки.
привет, извините, что мертвая нить жива, но что вы имеете в виду добавить атрибут имени в предложение? im, используя mvc 3.0, и я мог бы войти в систему, но после минуты нажатия он перенаправит меня на страницу входа еще раз. но в моем локальном хосте он отлично работает. Любая помощь приветствуется. благодаря! –
gdubs