0

複数のユーザーで構成された顧客提供のデータベースがあります。各ユーザーは、SQL Server のデータベース ログインである独自のユーザー名/パスワードなどを持っています。

従来のソフトウェアでは、ユーザーはデータベースとパスワードを求められ、それを使用してコードで接続文字列が形成されます。

私はこのために多くのデータベース コードを置き換えることを任されており、データベースに対してユーザー名とパスワードを非常に迅速にチェックする方法が必要です。現在、Linq を使用して、パスワードが正しくない場合、最終的に を取得しますが、System.Data.SqlClient.SqlException実際にスローするにはかなりの時間がかかります (タイムアウトだと思いますか?)。

ユーザー名とパスワードの組み合わせをデータベースに対してすばやくテストできる良い方法を知っている人はいますか?

4

2 に答える 2

0

タイムアウトを減らして、ADO を介して接続を開いてみることができます

 SqlConnection conn = new SqlConnection (yourconnectionstring + ";Connection Timeout=1;");          
 try
 { 
     conn.Open();
     conn.Close();
 }
 catch (SqlException ex)
 {
     if (ex.Number == 18456)
     {
          // invalid login
     }
 }

18456 は SQL 無効なログインです

デフォルトの接続タイムアウトは 15 秒です。

于 2012-08-06T08:36:00.227 に答える
-1

渡した資格情報が正しくないことをデータベース (または実際には何か) に伝えてほしくない、と私は主張します。なんで?それはブルートフォースチェックを可能にするからです。わずかな遅延を導入するだけでも、このような試みを阻止するのに大いに役立ちます。

于 2012-08-06T14:48:02.520 に答える