前提・実現したいこと
Visual Studio2017のWindows フォームアプリにてC#でアプリを作成中です.
ログイン画面の実装のユーザ認証に関しまして,わからない部分があり困っています.
テキストボックスを2つ,ボタンを2つ配置しまして,ユーザーネームとパスワードをユーザに入力してもらい,それが登録情報と一致してればメインアプリへ遷移するといったイメージのものを作成したいです.
発生している問題・エラーメッセージ
① プログラム内に,ユーザ名,パスワードを配列などにあらかじめ入れておいてそれとテキストボックスの値を比較する.
② Excelでユーザ名パスワード,社員番号などをまとめたシートを作成し,プログラム内でその値を呼び出し,テキストボックスの値と比較する.
上記のような2つの方法で,認証を行っていました.しかしとてもきれいな認証の仕方とは言えず,登録人数が増えれば増えるほど,プログラムもすごく長くなってしまうため,別の方法を検討したいです.
エラーメッセージ
該当のソースコード
C#
1 2namespace patlite_20180907 3{ 4 public partial class LogInForm : MetroForm 5 { 6 string filepath = @"C:data\App_user.xlsx"; 7 object[] array1 = new object[20]; 8 object[] array2 = new object[20]; 9 10 public LogInForm() 11 { 12 InitializeComponent(); 13 } 14 15 // ユーザ名,パスワードが共に一致した場合 16 private void Auth() 17 { 18 MessageBox.Show("パスワードを受け付けました"); // Windowsにて表示 19 this.Close(); // フォームを閉じる 20 } 21 // ユーザ名,パスワードが一致しない場合 22 private void Noauth() 23 { 24 MessageBox.Show("認証に失敗しました"); 25 userTextbox.Clear(); // User Nameのテキストをリセット 26 passTextbox.Clear(); // Pass Wordのテキストをリセット 27 userTextbox.Focus(); // User Name入力にカーソルをフォーカス 28 } 29 30 private void LoginButton_Click(object sender, EventArgs e) 31 { 32 XLWorkbook workbook = new XLWorkbook(filepath); 33 IXLWorksheet worksheet = workbook.Worksheet(1); 34 for (int i = 6; i < 25; i++) 35 { 36 array1[i - 6] = worksheet.Cell(i, 1); 37 array2[i - 6] = worksheet.Cell(i, 9); 38 if (array1[i] == userTextbox && array2[i] == passTextbox) 39 { 40 Auth(); 41 break; 42 } 43 else if (i == 24) 44 { 45 Noauth(); 46 } 47 } 48 } 49 50 private void CancelButton_Click(object sender, EventArgs e) 51 { 52 Application.Exit(); // アプリを終了 53 } 54 55 private void LogInForm_Load(object sender, EventArgs e) 56 { 57 this.ControlBox = false; 58 } 59 } 60} 61
補足情報(FW/ツールのバージョンなど)
Visual Studio 2017 C# windows7
SQLserverでデータベース作成に関しても調べたのですが,知識不足で自分のログイン実装にどう取り入れればいいかがわからず,断念してしまいました.
素人のわかりにくい説明で申しわけないですが,ここまで読んでくださってありがとうございます.
SQLserver含め,なにか方法をご存知の方いっらしゃいましたら,教えていただきたいです.
よろしくお願い致します.
回答4件
あなたの回答
tips
プレビュー