投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/5/24 02:57:35
> 今回はしないということで進めさせてください。
今後の課題ということですね。一応指摘してみたというだけで、特に強制するというものではありません。
(標準の MembershipProvider でも、平文モード/暗号化モード/ハッシュモードが選択できますし)


> 参考を元にわかる範囲で作ってみたのですがどうでしょうか?
概要としてはそれで良いと思いますが、以下、細かい点について。


> Dim Flag As String = 0
代入式の左辺と右辺の型が一致していませんね。

実際の SQL Server 側の権限列の型にもよりますが、
 Dim Flag As String = "0"
あるいは
 Dim Flag As Integer = 0
などではありませんか?


> Dim cn = New SqlConnection(cnstr)
参考にされた元コードは、実行後即座に終了するコンソールアプリでしたが
今回は実行後もアプリが動き続ける Windows Forms アプリなので、
Connection / Command / DataReader に関しては、
Using ブロックで囲った方が良いかも知れません。


> While rd.Read() ' 1 行読み込み
>  Pass = ※取得したもの
>  Flag = ※取得したもの
> End While
ここは While ループである必要は無いですね。

ID が主キーとなる場合、抽出結果は 1 件または 0 件なので、
ループで繰り返し取得する必要は無く、If で十分なはずです。

If rd.Read() Then
 Pass = rd.GetString("Password")
 Flag = rd.GetString("権限")
Else
 '該当者がいない場合の処理
End If



> If Password.Text = Pass Then
>   MessageBox.Show("ユーザー名とパスワードを受け付けました。")
>   Me.Close()
> Else
これだと、OK ボタンを押さずに、画面右上の×で閉じた場合にも
認証処理が通過してしまうのではありませんか?