ログインシステムでパスワード回復機能を使用しています。パスワード回復クエリがSqlのLinqと一致しない場合にメッセージを返す方法
パスワード回復フォームの要件は、3つの値:username, security question and security answer
を認証することでした。クエリでnull
が返された場合は、messagebox
が返されます。私の問題は、3つの値のうちの1つが真でない場合、エラー"Sequence contains no elements"
を返します。
私はtry-catch
というステートメントを使用していますが、この問題はソートされましたが、遅くて私の教授には推奨されないため、このメソッドを使用したくありません。
try-catchステートメントの代替手段がありますか、またはパスワードリカバリ機能の代替ソリューションがあります。パスワードを返す前に3つの値を最初に検証する必要があります。
PS:パスワードを暗号化する方法はありませんでした。私はこの作業を最初にしたいと思います。
var t = new DataClasses1DataContext();
tbl_Register r = null;
r = t.tbl_Registers.Single(p => p.u_username == textBox1.Text && p.u_secquestion == comboBox1.Text && p.u_secanswer == textBox2.Text);
if (r == null) {
MessageBox.Show("account is not found in the database");
} else {
MessageBox.Show("your password is:\t" + r.u_password);
}
Single()の代わりに.FirstOrDefault()を試しましたか? –
(技術的に正しい)すべての回答を脇に - .NETスタックを使用している場合は、[認証プロバイダ](https://msdn.microsoft.com/en-us/library/eeyk640h.aspx)を使用してくださいそれと。それはあなたが最初から構築しようとしているものすべて(セキュリティの質問などを含む)を持っています。 – Filburt