Показывать сообщение при неправильном входе в систему
Когда я вхожу в систему с неправильным именем пользователя и паролем, то он перенаправляется на webform2. aspx, где я хочу показать сообщение с неправильным именем пользователя и паролем
как я это делаю ?
я пытаюсь использовать код ниже, но он не работает
protected void Button1_Click(object sender, EventArgs e) { if(loginmethod(txt_us.Text,txt_pwd.Text)!="NA") { FormsAuthentication.Initialize(); String strRole =Assignroles(txt_us.Text); FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, txt_us.Text, DateTime.Now, DateTime.Now.AddMinutes(30), false, strRole, FormsAuthentication.FormsCookiePath); Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(fat))); loginmethod(txt_us.Text, txt_pwd.Text); Response.Redirect("WebForm2.aspx"); } else { Label1.Text = ("Incorrect UserName/Password"); Label1.Visible = true; } txt_us.Text = ""; txt_pwd.Text = ""; } private string loginmethod(string UserName, string Password) { try { login_class lg_class = new login_class(); Entities2 login = new Entities2(); string logn = Convert.ToString(lg_class.loginfu(UserName, Password).Rows[0]["id"]); Session["ID"] = logn.ToString(); return (logn); } catch (Exception ex) { return (ex.Message.ToString()); } }
Что я уже пробовал:
метод loginfu
public DataTable loginfunction(string username, string password)
{
пробовать
{
Entities2 lg = новые Entities2();
List<sp_getlogin_result & gt; gr = lg.SP_GetLogin(имя пользователя, пароль).Список();
DataTable dt = новый DataTable();
ДТ.Столбцы.Add ("id", typeof (string));
по каждому элементу (ВАР я в гр)
{
ДТ.Строк.Добавить(я.идентификатор);
}
возврат dt;
}
catch (исключение)
{
выбросить новое исключение();
}
}
Karthik_Mahalingam
отладка и проверка значения в dt
super_user
ДТ возвращает идентификатор .. это возвращение паспорта на имя пользователя и пароль
Karthik_Mahalingam
хорошо
, согласно вашему коду, если идентификатор не 'na', он будет проверен и перенаправлен на nextpage (WebForm2)
в противном случае он отобразит сообщение об ошибке на этикетке.
super_user
да @Картик Бангалор
Karthik_Mahalingam
тогда! в чем же проблема
super_user
проблема заключается в том, что когда я ввожу неправильное имя пользователя и пароль и нажимаю на кнопку, то это перенаправление на страницу WebForm2.aspx, тогда как я хочу показать сообщение на странице входа в систему, т. е. неправильное имя пользователя и пароль, когда вводится неправильная информация
Karthik_Mahalingam
вы должны изменить свой sp таким образом, чтобы, если учетные данные неверны, он возвращался как "na".
я думаю, что он возвращает что-то еще. пожалуйста, проверьте.
super_user
@Karthik Bangalore я пробую это ..
обновленный
охраняемых недействительными обработчика button1_click(объект отправителя, EventArgs в электронной)
{
пробовать
{
loginmethod(txt_us.Текст, txt_pwd.Текст);
Метод formsauthentication.Инициализировать();
String strRole = Assignroles(txt_us. Text);
Консоли восстановления команда formsauthenticationticket жира = новые консоли восстановления команда formsauthenticationticket(1, txt_us.Текст, Дата И Время.Теперь, Типа Datetime.Сейчас.AddMinutes(30), накладные, strRole, метод formsauthentication.FormsCookiePath);
Ответ.Cookies.Add (new HttpCookie(FormsAuthentication.FormsCookieName,
Метод formsauthentication.Шифрование (жир)));
loginmethod(txt_us.Текст, txt_pwd.Текст);
Ответ.Перенаправление ("home. aspx");
}
ловить
{
Этикетка 1.Text = ("Неверное Имя Пользователя/Пароль");
Метка1.Видимое = истинное;
}
txt_us.Текст = "";
txt_pwd.Текст = "";
}
метод login
private bool loginmethod(строковое имя пользователя, строковый пароль)
{
если((txt_us.Текст!="НС") и усилитель; & (txt_pwd.Текст!= "На"))
{
login_class lg_class = новый login_class();
Entities2 login = новые Entities2();
строка logn = Convert.ToString(lg_class. loginfunction(имя пользователя, пароль).Строки[0] ["id"]);
Сеанс ["ID"] = logn.Метод toString();
возвращение (Фремонт, Калифорния);
}
ещё
{
возвращать false;
}
}
private string Assignroles(string username)
{
если ((txt_us.Текст !=строка.Пустой) и усилитель; & (txt_pwd.Текст!= строку.Пустой))
вернуть "";
ещё
возвращенная строка.Пустой;
}
когда я попробовать приведенный выше код, и когда я войти неверный логин и пароль, то это шоу incrrect ошибка имя пользователя и пароль
но когда я ввожу правильную информацию то есть имя пользователя и пароль то это всегда показывает неправильное имя пользователя и пароль где как я хочу перенаправить другую страницу когда информация верна
Karthik_Mahalingam
этот код не имеет никаких условий.
не проверяйте состояние в блоке catch, это неправильный способ кодирования.
super_user
хорошо, значит, я проверяю состояние через if else?
Karthik_Mahalingam
да, нарисуйте блок-схему и то, как идет поток, и код на ее основе.
super_user
но когда я делаю это через if else то когда я ввожу неправильную информацию то это перенаправление на страницу в то время как я хочу показать ошибку как я разместил свой код в вопросе
Karthik_Mahalingam
если(недействительный){ показать ошибку }
ещё
{
перенаправление на новую страницу.
}
super_user
поток..
логин.aspx-файл --&ГТ; неправильная информация--&ГТ; войти.aspx-файл
|
правильная информация
|
Webform2.aspx-файл
Karthik_Mahalingam
проверьте приведенный выше пример кода.