2017-09-26 5 views
0

私は暗号化されていないプログラムを作成しており、ビジネス上の要件は2人のユーザーがログインする必要があることです。どうすればC#で両方のユーザーをSQLにログインしようとするプログラムを書くことができますか?ユーザーはSQLユーザーであり、C#でSQLユーザーを認証する方法を理解できません。SQL ServerとC#を使用して2人のユーザーを一度に認証する方法

私は2つのユーザー名スロットと2つのパスワードスロット、そして共有ログインボタンを持つログイン画面を想像しました。クリックすると、ユーザーごとにユーザー認証が行われます。両方の認証が成功すると、そのファイルは復号化されます。

何か助け、助言または指示があれば幸いです。このよう

+2

1つのアイデアは、TPLを使用し、各ユーザーの資格情報ごとにタスクを作成し、異なるスレッドで同時に実行することです。 https://msdn.microsoft.com/en-us/library/system.threading.tasks.task(v = vs.110).aspx – rmjoia

+0

私はそれが何であるかはわかりませんが、もう少し調べてみます:) – Missy

+1

同じマシンでも両方のユーザーでも動作するようにこれを探していますか?他の? –

答えて

1

認証ユーザーメソッドは次のようになります - 接続文字列は、catch文で特定のアプリやメッセージボックスのために変更する必要があることに注意して、平均的なユーザーのために、おそらく多すぎる:)

private bool AuthenticateUser() 
    { 
     // rather than picking up variable names, I am picking up the information from the text boxes on the screen. 
     bool retVal = false; 
     string cs1 = "Data Source=yourdatasource;Initial Catalog=yourcat;Persist Security Info=True;User ID=" + txtLogin1.Text.Trim() + ";Password=" + txtPW1.Text.Trim() + ";"; 
     string cs2 = "Data Source=yourdatasource;Initial Catalog=yourcat;Persist Security Info=True;User ID=" + txtLogin2.Text.Trim() + ";Password=" + txtPW2.Text.Trim() + ";"; 
     try 
     { 
      using (var connection = new SqlConnection(cs1)) 
      { 
       connection.Open(); 
       retVal = true; 
      } 
     } 
     catch (SqlException e2) 
     { 
      MessageBox.Show("User 1 Failed " + e2.ToString()); 
     } 

     try 
     { 
      using (var connection = new SqlConnection(cs2)) 
      { 
       connection.Open(); 
       retVal = true; 
      } 
     } 
     catch (SqlException ex) 
     { 
      MessageBox.Show("User 2 Failed "+ex.ToString()); 

     } 
     if (retVal) 
      { MessageBox.Show("Passed"); } 
     else 
      { MessageBox.Show("Please Try"); } 

     return retVal; 
    } 
} 
3

何かトリックを行うことができます。

private async Task TestUserAuthAsync(){ 

    var task1 = Task.Run(AuthenticateUser("username1", "password1")); 
    var task2 = Task.Run(AuthenticateUser("username2", "password2")); 

    await Task.WhenAll(task1, task2); 
} 

戻り結果はログのようにあなたは、より多くを行うことができますが... Parallel.ForEachよう

何かも動作することができます。

+0

AuthenticateUserはSQL関数でビルドされていますか? – Missy

+0

いいえ、私はいくつかの方法を作り上げていました。あなたはそのコードを書く必要があります。多分linqを使ってSQLのインスタンスを試してみてください。あなたはすでに1人のユーザを認証するコードを持っていたと思います。 – rmjoia

+0

SQLで設定したユーザを使いたいです。まだ私を助けてあなたを鼓動しました:) – Missy

関連する問題