現在、Log inフォームで作業していますが、無効なユーザー名を入力するとこのエラーが発生します。このコード行で LINQ TO SQLのBase-64 char配列の長さが無効
Invalid length for a Base-64 char array.
:ここ
bool isSame = hasher.CompareStringToHash(txtPassword.Text, hashedPassword);
は完全なコード
public void verifyAccount()
{
var hashedPassword = getPassword();
var hasher = new Hasher();
hasher.SaltSize = 16;
bool isSame = hasher.CompareStringToHash(txtPassword.Text, hashedPassword);
if (isSame==false)
{
MessageBox.Show("Invalid UserName or Password");
}
else
{
MainWindow main = new MainWindow();
this.Hide();
main.ShowDialog();
this.Close();
}
}
であり、これは自分のパスワードを取得すると同時に、このようなユーザ名を検索するための方法であり、データベースのパスワード。
public string getPassword()
{
DataClasses1DataContext myDbContext = new DataClasses1DataContext(dbPath);
var password = (from user in myDbContext.Accounts
where user.accnt_User == txtUser.Text
select user.accnt_Pass).FirstOrDefault();
if (password == null) {
return "z";
}
return password;
}
ダミーの戻り値が必要です。そのデータベースにUserが存在しない場合は、パスワードが間違っているというメッセージが返されます。 – KyelJmD
私はダミーの値を返さないことをお勧めしますが、代わりにnullを返します。次に、verifyAccount()メソッドで戻り値をnullと比較できます。 nullの場合、ユーザーは存在しません(データベースにNULLを許可しない場合)。 nullでなければ、安全にハッシュをチェックして、パスワードが正しいかどうかを知ることができます。 –
私はそれをどのように実装するでしょうか?私が持っているのは、if文の乱雑なコードに沿ったものです。 – KyelJmD