实际上,我有这部分代码来比较用户输入的密码是否与SQL Server数据库中输入的密码相同:
if (drUtilisateur["MotDePasse"].ToString() == strMotDePasse)
我不明白为什么drUtilisateur["MotDePasse"].ToString()
无法正常工作。
你有什么解决方案吗?
首次实现:
这是我的完整代码,其中上面的部分代码位于:
private bool Authentifier(string strNomUtilisateur, string strMotDePasse)
{
bool bOk = false;
// Cryptage du mot de passe
strMotDePasse = FormsAuthentication.HashPasswordForStoringInConfigFile(strMotDePasse, "MD5");
// Création d'une connexion SGBD
SqlConnection oConnexion = new SqlConnection(Convert.ToString(ConfigurationManager.ConnectionStrings["SaisieHeuresConnectionString"]));
// Définition de la requête à exécuter
SqlCommand oCommand = new SqlCommand("SELECT * FROM Utilisateurs WHERE NomUtilisateur='" + strNomUtilisateur + "'", oConnexion);
try
{
// Ouverture de la connexion et exécution de la requête
oConnexion.Open();
SqlDataReader drUtilisateur = oCommand.ExecuteReader();
// Parcours de la liste des utilisateurs
while (drUtilisateur.Read())
{
if (drUtilisateur["MotDePasse"].ToString().Equals(strMotDePasse))
{
bOk = true;
break;
}
}
}
catch
{
bOk = false;
}
oConnexion.Close();
return bOk;
}
我将我的密码哈希到MD5中(因为它是向我询问的哈希方法)。
答案 0 :(得分:0)
尝试
if (drUtilisateur["MotDePasse"] != DBNull.Value) {
drUtilisateur["MotDePasse"].ToString().equals(strMotDePasse)
} else {
//null
}
注意:请勿以明文形式存储密码......
答案 1 :(得分:0)
我找到了答案。
实际上,我的计划有效。
异常是当用户输入密码时,将程序哈希到MD5;字母是大写的,而我在我的数据库中以小写形式输入。
因此,当您在代码中比较MD5中的两个密码时,请注意这个案例。