投稿者 魔界の仮面弁士  (社会人) 投稿日時 2014/6/10 23:24:45
> ログイン成功後、IDとユーザー名を各フォームで使用したい

先のコードでは、ログイン成功後の「IDとユーザー名」を、
Sub Main 内のローカル変数『Dim account As UserInfo』で管理し、
表示する各画面に、その情報を受け渡すという方針を採っています。

SQL Server の Management Studio は、複数のユーザーで接続が可能ですが、
それと同様に、将来的にマルチユーザーログインが可能なアプリケーションが求められても、
 fAdmin = New fmMain( 管理者アカウント )
 fAdmin.Show()
 fGuest = New fmMain( 体験版アカウント )
 fGuest.Show()
のようにして、同じ画面を認証ユーザーごとに並行して開くといった芸当も可能になります。



一方、常にシングルログインしか認めないようなアプリであれば、
現在のログイン情報を、一箇所にまとめて管理しておいた方が便利です。

その場合は、この account As UserInfo な変数を、ローカル変数ではなく
アプリケーション全体から見えるような場所に配置すると良いでしょう。

たとえば、Module を用意してそこに Public Account As UserInfo などと宣言するとか、
ログイン画面自体の Shared メンバーとして Public Shared Account As UserInfo とするとか、
あるいは、UserInfo クラスそのものをシングルトンクラスとするなどの手法です。


このほか、現在のユーザー情報を My.User.CurrentPrincipal プロパティの
プリンシパルで管理するという方法もあります。この方法は、SQL Server に
Windows 認証で繋いでいる場合に丁度良いかもしれません。