1

BCrypt を使用してパスワードをハッシュします。ログイン クエリで、パスワードを確認します。

var kier = (b.Login == model.Użytkownik && BCryptHelper.CheckPassword(model.Hasło, b.Haslo) && b.konto == "kierownik" select b).Any(); の b から b.Any();

コンパイル中にエラーが発生しました:

メソッド 'Boolean CheckPassword(System.String, System.String)' には、サポートされている SQL への変換がありません。

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

3

Linq-to-SQL を使用しています。これは、Linq クエリが、データベースに対して実行される SQL ステートメントに変換されていることを意味します。SQL には CheckPassword はありません。最初に、パスワード ハッシュ チェックなしでデータベースからユーザーをロードする必要があります。次に、ハッシュチェックを行います。何かのようなもの:

var user = (from b in baza.Logowanies where b.Login == model.Użytkownik && b.konto == "kierownik" select b).FirstOrDefault();
if (user != null && BCryptHelper.CheckPassword(model.Hasło, user.Haslo))
{
    // Do login.
}
else
{
    // Fail login.
}

ここには言語の壁があり、間違った推測をした可能性があることに注意してください。

于 2011-11-08T11:58:23.253 に答える