2016-06-23 8 views
0

私のWindowsフォームプロジェクトに問題があります。私はSQL Serverのログインのユーザーパスワードを変更するための機能を持っています。ユーザーは古いパスワードでWindowsフォームにログインします。パスワード変更機能に移動した後、新しいパスワードと古いパスワードを入力するよう求められます。新旧のパスワード ログインパスワードを変更した後、ユーザーの再認証を強制します

ALTER LOGIN [LOGIN_NAME] 
    WITH PASSWORD = 'NEW_PASS', OLD_PASSWORD = 'OLD_PASS'; 

パスワード

を変更するには、このSQLコマンドを使用して、受信しかし、問題も、このセッションではSQL Serverに古いパスワードと新しいパスワードのログインを使用するユーザーであるされています。プロジェクトを停止して再開すると、古いパスワードは期限切れになっていました。私はユーザーが新しいパスワードを提出したいとき、アプリケーションはそれを使って再度ログインを強制しなければなりません。誰も私に解決策を与えることができますか?

ありがとうございます!

P/S:私はユーザーがデータベースに接続する方法についてもっと詳しく話すべきだと思います。

私はこのような接続文字列を使用しています:

Program.connstr = "Data Source=" + Program.servername + ";Initial Catalog=" + Program.database + ";User ID=" + Program.mlogin + ";password=" + Program.password; 

ユーザーがそのデータベースに許可されたアカウントを使用してデータベースに接続し、タスクが必要で実行されます。パスワードの変更により、接続文字列のパスワードが更新されます。

ありがとうございました!

答えて

0

SQLデータベースへのリクエストごとに新しい接続を作成すると仮定すると(実際に行うべきことです)、SQL接続ファクトリを作成してユーザーの接続を作成できます。このファクトリがlogin failed for userのようなSQL例外をキャッチすると、Your password is expiredウィンドウに切り替え、資格情報を再度要求します。

public class SqlConnectionFactory 
{ 
    public static SqlConnection CreateConnection() 
    { 
     try 
     { 
      string connectionString = $"Data Source={Program.servername};Initial Catalog={Program.database};User ID={Program.mlogin};password={Program.password};"; 
      var connection = new SqlConnection(connectionString); 
      connection.Open(); 
      return connection; 
     } catch (SqlException se) when (se.Number == 18456) 
     { 
      MessageBox.Show("Your password is invalid. Try to login again."); 
      Environment.Exit(0); 
     } 
    } 
} 


// Everywhere in your code 
SqlConnectionFactory.CreateConnection(). 

おそらく、アプリケーションを閉じるよりももっと美しいアプローチが必要ですが、これは単なるデモです。
のように、接続を作成し、コマンドを作成し、実行後にリーダーを返すような方法をいくつか作成することもできます。

+0

ありがとうございました。明らかに、私はもうアプリケーションを終了したくありません。私はこのリンクを読んでいた:https://msdn.microsoft.com/en-us/library/ms189828.aspx 彼らは言った: "パフォーマンス上の理由から、パスワードがSQLデータベースでリセットされると、接続は再開されません接続プールによって接続がリセットされた場合でも、認証されます。だから私は問題は、接続はまだ古い情報が残っていると思う。私はそれがこの接続を更新することを強制することができれば、私の問題は解決されるかもしれません。 – NhanDT

関連する問題