私のwinformsデスクトップアプリケーションのユーザーは、私はユーザーログシステムを持っています。ユーザーがログに記録されているかどうかを確認するロジックを設定する場所が不明です。ログインしている場合は、メインウィンドウを表示するか、ログインしていない場合はログインフォームを表示します。C#winformsユーザーがログオンしているかどうかを確認する場所
まず、winformsはセッションをサポートしていないため、データベースをログに記録しないようにしています。私は静的User
クラスのどこに私がsuper_admin資格情報を格納し、このアプリで十分です。
だから私の最初の試みは、メインウィンドウのフォームが示したされる前にメインですべてを設定することです:
Program.csの
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (!User.IsLogged)
{
Application.Run(new Login());
}
Application.Run(new Login());
}
またはコンストラクタ内部やLoad
にこの内部MainWindow
フォームを設定することをお勧めします?または静的内部MainWindow
のコンストラクタ内にあるのでしょうか? MainWindowはmdiです!
あなたは私により良い方法を教えていただけますか?ここで
が静的である(User.cs):
private static string superAdminUsername = "admin";
private static string superAdminPassword = "123";
public static bool IsLogged
{
get
{
return isLogged;
}
set
{
isLogged = value;
}
}
public static bool Authenticate(string username, string password)
{
if (username == superAdminUsername && password == superAdminPassword)
{
isLogged = true;
return true;
}
return false;
}
を」 「記録済み」とは「ログイン済み」とはまったく異なるものを意味します。また、プレーンテキストのパスワードをアプリにハードコーディングすることは、ハッキングするためのレシピにすぎません。 – mason
私がこれをしていたら、プロジェクトのすべてのフォームが継承し、ロードするときに(OnShownまたはPerformLayout)、ユーザーがログインしているかどうかを確認する基本フォームを作成します。ユーザがログインする必要があるブロックモーダルダイアログ。 – AWinkle
@mason am quote myself '私はsuper_adminの資格情報を保存している静的なユーザークラスを作成し、このアプリケーションで十分です。 @Winkleベースフォームは 'MainWindow'で、彼はMIDで、他のすべてのフォームはそのフォームの中に新しいタブでロードされます – Ivan