2011-11-30 6 views
1

私は比較的新しいC#です。メインアプリケーションウィンドウを起動する前に簡単なユーザー認証で始まるアプリケーションを構築しようとしています。フォームのコードの背後にあるコードとは別のクラスでログインの詳細を確認する必要があります

現時点では、ドメインとユーザーのパスワードを要求するログインフォームがあります。 次に、principalcontextクラスを使用して詳細を認証します。ここで

は、ボタンがログインフォーム上でクリックされたときに呼び出されるコード(名とパスワードの後に​​入力されている)

private void validatelogin(object sender, RoutedEventArgs e) 
{ 
    password = passwordBoxICCLogin.Password.ToString(); 
    username = tbUserName.Text.ToString(); 

    using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "xxx")) 
    { 
    bool isValid = pc.ValidateCredentials(_username, _password); 
    if (isValid) 
    { 
     DevLauncher launch = new DevLauncher(); 
     launch.Show(); 
     this.Close(); 
    } 
    else 
    { 
     MessageBox.Show("Invalid ID \ Password combination entered"); 
    } 
    } 
} 

これはおそらく、あなたの中で経験を積んへの基本的なように見えるだろうが、私は実装したいです賢明で、きちんとしたデザイン、そして私がこの権利を得るなら、それはアプリケーションの残りのための良い基礎です。

1)フォームのコードビハインドでこのユーザー認証がすべて行われるか、またはユーザー認証を処理するsayValueUserという新しいクラスを作成してイベントから呼び出すと、ValidateUserがブール値? 私は、フォームの背後にあるコードに直接的な認証の詳細が発生してはいけないと感じるような気がしますか?

2)これに続いて、ユーザー名とパスワードを保持するコードビハインドフォームのプロパティを設定しました。検証ユーザークラスを作成する場合、これらのプロパティをこのクラスに含める必要がありますか?

3)このメソッドのNUNITテストでは、validatecredentialsメソッドから返されたブール値を単純にテストする必要があります。つまり、assert.equals(True、validatecredentailsobject(username、domain) - これらの行に沿ったもの)

NUnitのテスト可能である方法。

私は方法、その後、最初のNUnitのテストを書くアプリの残りの部分を開発したいと思います。

+1

もしあなたが本当にうんざりしているのであれば、「ページングファイルに戻ったり、キーボードロガーで詮索したりすることができるユーザー名とパスワードを保存するのは良い考えですか?試して検証された安全なWindowsログイン以外の認証層を追加することは、本当に悪い考えです。 –

答えて

0

代わりに、ユーザー名とパスワードの入力を求める、あなたはのリストを格納することができますデータベースのユーザー名(Windows ID)を入力し、次のコードを使用して、コンピュータにログオンしているユーザーのユーザー名を取得します。

string userName = Environment.UserName.ToLower(); 

次に、userNameとデータベースの内容を比較します。

次のようなのInitializeComponent()の前に、フォームのコンストラクタでこれを行うことができます:

​​

をのisAuthorizedは、ユーザーの認証レベルを確認するためにあなたの関数です。

+0

この回答は、認証を行うための1つの方法の考え方を示すのに役立ちます。私はあなたの質問のnUnitの部分を助けることができません。ただし、このメソッドを実行すると、アプリケーション内にユーザー名/パスワードを格納する必要はなく、再検証は必要ありません。彼らがプログラムを実行しようとしたときに一度だけチェックしてください。権限が変更されていないとみなすことができます。 –

関連する問題