2012-01-22 81 views
2

私のアプリケーションでは、すべての設定がある部分があります。これは、設定ボタンをクリックするとアクセスできます。 ここでは、設定をポップアップする前に、小さなログイン画面を追加して、管理者だけが設定を変更できるようにしたいと考えています。ログイン画面の作成、WPF、ユーザー名とパスワードの保存方法

最初は、デフォルトのユーザー名 "Admin"とパスワード "AdminPass"を追加するだけで非常にシンプルになります。 これは、userinputがコード内にあるべきものと同じであるかどうかをチェックします。それは続けるだろう。

しかし、これには欠点があります。ユーザー名とパスは内部でハードコードされているため、アプリケーション内でこれ以上変更することはできません。 (私は設定でそれをやっていない限り、それはアプリの外で読むことができるxmlなので、正しい解決策ではない)。

だから、この問題の最良の方法は何でしょうか?初期設定で最初にログインした後、管理者は管理パスを変更することができ、これはアプリケーションに保存されます(したがって、アプリケーションの再起動後に保存されます)。

答えて

4

1つの方法は、パスワードのハッシュを取得してテキストファイルに保存することです。ユーザーがパスワードを入力したら、ハッシュします。テキストファイルに格納されているハッシュと一致します。一致する場合は、ログインを許可することができます。ユーザーがパスワードを変更することを決定した場合

は同様に、あなたはまた、アプリケーション構成でこの情報を保存することができます

public static string EncodePassword(string password) 
{ byte[] bytes = Encoding.Unicode.GetBytes(password); 
    byte[] inArray = HashAlgorithm.Create("SHA1").ComputeHash(bytes); 
    return Convert.ToBase64String(inArray); 
} 

パスワードをハッシュ化するために、このコードを使用することができ、新しいもの

古いハッシュを置き換えますファイル

+0

しかし、テキストファイルとアプリケーション設定ファイルはメモ帳で読み取ることができ、正しく暗号化されていませんか? – Dante1986

+0

はい、これらのファイルは読み取ることができますが、ファイルに保存されている値は暗号化(ハッシュ)されます。ユーザーが暗号化された値を参照するかどうかは関係ありません。ハッシュメソッドを試してみて、私が何を話しているのかを見てください。 –

+0

ahaaa、私はこれを私が推測することを試みます。それほど長い間ではなく、まだそれはどのように動作するか見るために時間がかかるでしょう。あなたはたぶん素晴らしいポストやサイトを知っていますか? – Dante1986

0

可能な場合は、ユーザーのためにデータベーステーブルを作成することをお勧めします。これにより、パスワードを変更したり、アプリケーションに複数のユーザーアカウントを持たせることができます。

何らかの理由でデータベースシステムを使用したくない場合でも、高度なセキュリティアプリケーションについて話していない場合は、暗号化されたパスワードをMD5などの可逆暗号化でxmlファイルに保存できます。

System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider(); 
byte[] data = System.Text.Encoding.ASCII.GetBytes(yourPassword); 
data = x.ComputeHash(data); 
String md5Hash = System.Text.Encoding.ASCII.GetString(data); 
+0

このようなデータベーステーブルはSQLなどで行われますか?私はこれに新しいので、もう少し説明できますか?チュートリアルページを教えてください。 – Dante1986

+0

Sql ServerまたはMySqlを使用してC#に接続するための検索 多くのユーザーがいなくても、暗号化されたパスワードを含むフラットファイルは問題ありません。 – Kypros

関連する問題