У меня есть страница, которая является страницей входа. Я хочу аутентифицировать пользователя, используя адрес электронной почты или номер телефона в разделе Username
.Аутентификация по электронной почте или номеру телефона
Я использую следующий метод:
public Customer Authenticate(string uname, string pass)
{
string query = "select * from tblCustomer where ([email protected] OR [email protected]) and [email protected] ";
List<SqlParameter> lstP = new List<SqlParameter>();
lstP.Add(new SqlParameter("@uname", uname));
lstP.Add(new SqlParameter("@pass", pass));
DataTable dt = DBUtility.SelectData(query, lstP);
if (dt.Rows.Count == 0)
{
return new Customer();
}
else
{
return SelectByID(Convert.ToInt32(dt.Rows[0]["CustomerID"]));
}
}
Теперь в этом методе, как добавить 3-ий параметр ?? то есть phone number
?
Любые идеи, как мне это сделать? P.S .: Я использую 3-уровневую архитектуру
Далее следует код для SelectData
упаковывают необходимого:
public static DataTable SelectData(string query, List<SqlParameter> lstParams)
{
SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|MyDB.mdf;Integrated Security=True");
SqlCommand comm = new SqlCommand(query, conn);
comm.Parameters.AddRange(lstParams.ToArray());
SqlDataAdapter adapter = new SqlDataAdapter(comm);
DataTable dt = new DataTable();
conn.Open();
adapter.Fill(dt);
conn.Close();
return dt;
}
Я мог бы это сделать, но тогда мне пришлось бы добавить еще один параметр к параметру 'method's':' Authenticate (string uname, string pass) 'и я вхожу ** только один **' Username' .. Тогда как мне передать 3 параметра? –
@AbhishekGhosh: Если вход содержит одно значение ('uname'), а в базе данных есть один столбец, связанный с этим значением (' Username'), то почему вам нужно добавить еще одно в первую очередь? Зачем вам сравнивать один и тот же столбец с одним и тем же значением ввода дважды? – David
У меня есть столбец с именем 'Username', который я хочу пройти аутентификацию в полях' Email' или 'Phone' в базе данных. –