#c# #.net
#c# #.net
Вопрос:
Я хочу использовать надежный пароль в своей программе. Итак, я искал надежную проверку пароля, но я не понял, как вызвать эту функцию при сохранении.
Это функция, которую я хочу использовать для проверки пароля:
private bool ValidatePassword(string password, out string ErrorMessage)
{
var input = password;
ErrorMessage = string.Empty;
if (string.IsNullOrWhiteSpace(input))
{
throw new Exception("Password should not be empty");
}
var hasNumber = new Regex(@"[0-9] ");
var hasUpperChar = new Regex(@"[A-Z] ");
var hasMiniMaxChars = new Regex(@".{8,15}");
var hasLowerChar = new Regex(@"[a-z] ");
var hasSymbols = new Regex(@"[!@#$%^amp;*()_ =[{]};:<>|./?,-]");
if (!hasLowerChar.IsMatch(input))
{
ErrorMessage = "Password should contain At least one lower case letter";
return false;
}
else if (!hasUpperChar.IsMatch(input))
{
ErrorMessage = "Password should contain At least one upper case letter";
return false;
}
else if (!hasMiniMaxChars.IsMatch(input))
{
ErrorMessage = "Password should not be less than or greater than 12 characters";
return false;
}
else if (!hasNumber.IsMatch(input))
{
ErrorMessage = "Password should contain At least one numeric value";
return false;
}
else if (!hasSymbols.IsMatch(input))
{
ErrorMessage = "Password should contain At least one special case characters";
return false;
}
else
{
return true;
}
}
Код кнопки сохранения:
private void btnSave_Click(object sender, EventArgs e) {
var data = DBConnection.DBConnect();
SqlCommand cmd = new SqlCommand("Insert_Users", data);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@StaffName", SqlDbType.VarChar).Value = txtStaffName.Text;
cmd.Parameters.Add("@Email", SqlDbType.NVarChar).Value = txtEmail.Text;
cmd.Parameters.Add("@UserName", SqlDbType.NVarChar).Value = txtUsername.Text;
cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value = txtPassword.Text;
cmd.Parameters.Add("@Phoneno", SqlDbType.NVarChar).Value = txtPhoneNo.Text;
cmd.Parameters.Add("@Admin", SqlDbType.Char).Value = chkIsAdmin.CheckState == CheckState.Checked ? 1 : 0;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
MessageBox.Show("Saved Sucessfully");
LoadUsers();
}
Может кто-нибудь подсказать мне, как я могу использовать эту функцию для проверки пароля, пожалуйста?
Комментарии:
1. Я не вижу ни одного столбца пароля, который вы вставляете при выполнении процедуры сохранения. Когда именно вы хотите?
2. ops я пропустил размещенный код кнопки, извините
Ответ №1:
Может быть, я не понимаю проблему, но это так просто?:
private void btnSave_Click(object sender, EventArgs e) {
var error = string.Empty;
if(ValidatePassword(txtPassword.Text, error))
{
var data = DBConnection.DBConnect();
SqlCommand cmd = new SqlCommand("Insert_Users", data);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@StaffName", SqlDbType.VarChar).Value = txtStaffName.Text;
cmd.Parameters.Add("@Email", SqlDbType.NVarChar).Value = txtEmail.Text;
cmd.Parameters.Add("@UserName", SqlDbType.NVarChar).Value = txtUsername.Text;
cmd.Parameters.Add("@Password", SqlDbType.VarChar).Value = txtPassword.Text;
cmd.Parameters.Add("@Phoneno", SqlDbType.NVarChar).Value = txtPhoneNo.Text;
cmd.Parameters.Add("@Admin", SqlDbType.Char).Value = chkIsAdmin.CheckState == CheckState.Checked ? 1 : 0;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
MessageBox.Show("Saved Sucessfully");
LoadUsers();
}
else
{
throw new Exception(error); // Or Console.WriteLine(error) or whatever
}
}
Комментарии:
1. nth неверно, я просто не знал, как вызвать функцию спасибо за вашу помощь
2. Хорошо, это было легко: D Не могли бы вы проверить этот ответ как правильный, если это решение вашей проблемы?