super_user Ответов: 0

Показывать сообщение при неправильном входе в систему


Когда я вхожу в систему с неправильным именем пользователя и паролем, то он перенаправляется на 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

проверьте приведенный выше пример кода.

0 Ответов