DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ログインしたユーザ情報を保持するには

環境/言語:[VB.NET]
分類:[.NET]

こんにちは。教えてください。

VB.NET2003で作成しているアプリケーションについてです。
ログイン画面よりユーザIDとパスワードでログインしました。このログインに関する情報を保持したいのです。ASPでいうSESSIONと同じ考え方で、ログインすることでユーザIDがパソコンに保持されれ、アプリケーションを終了することによりログイン情報が消去されるという動作です。複数のフォームを別々のEXEとして作成しているのでグローバル変数では保持できません。

レジストリに書くという方法が考えられると思うのですが、皆さんはどのようにされていますか?
■No7745に返信(Graphsさんの記事)
> こんにちは。教えてください。
>
> VB.NET2003で作成しているアプリケーションについてです。
> ログイン画面よりユーザIDとパスワードでログインしました。このログインに関する情報を保持したいのです。ASPでいうSESSIONと同じ考え方で、ログインすることでユーザIDがパソコンに保持されれ、アプリケーションを終了することによりログイン情報が消去されるという動作です。複数のフォームを別々のEXEとして作成しているのでグローバル変数では保持できません。
>
> レジストリに書くという方法が考えられると思うのですが、皆さんはどのようにされていますか?

こんにちは。
共有メモリの保持したら?って書いたら、アレなんだろうなぁ...

と言う事で、別解
>複数のフォームを別々のEXEとして作成しているのでグローバル変数では保持できません。
であるならば、コマンドライン引数で別のexeに値を渡してはどうでしょうか?
補足ですが、

■No7745に返信(Graphsさんの記事)

> レジストリに書くという方法が考えられると思うのですが、

こんなことしちゃ、絶対ダメですよ :)
■No7746に返信(ぺがらぼさんの記事)
> こんにちは。
> 共有メモリの保持したら?って書いたら、アレなんだろうなぁ...
すいませんが、「アレ」をお教えいただけませんか?

> >複数のフォームを別々のEXEとして作成しているのでグローバル変数では保持できません。
> であるならば、コマンドライン引数で別のexeに値を渡してはどうでしょうか?
他人のIDで別のEXEを起動できてしまう気がしますが、その方法を調べてみます。

ありがとうございました。
■No7749に返信(Graphsさんの記事)
> ■No7746に返信(ぺがらぼさんの記事)

>>>複数のフォームを別々のEXEとして作成しているのでグローバル変数では保持できません。
>>であるならば、コマンドライン引数で別のexeに値を渡してはどうでしょうか?
> 他人のIDで別のEXEを起動できてしまう気がしますが、その方法を調べてみます。
>
> ありがとうございました。

IDなどを引数にするのであれば、ハッシュ化(簡単に言うと暗号化)
する必要があると思います。
IDジャックできてしまっては意味がありませんよね...
■No7745に返信(Graphsさんの記事)

> レジストリに書くという方法が考えられると思うのですが

分離ストレージを使う方法が考えられるかな。
でも、いろいろとうまくやらないといけないとこがでてくるかも。
■No7745に返信(Graphsさんの記事)
>レジストリに書くという方法が考えられると思うのですが
レジストリキーもハッシュ化してしまえば、何とかなるかも...
状態保持の大事なポイントとして。

■プログラムが異常終了した場合の後始末はできますか?
■フラグが立ったままアプリケーションが落ちると再度実行したときに
 ログイン済み状態から復元するのではないでしょうか。
■有効期限(最終処理から15分とか。)をセットすることを
 考えなくてはいけないかもしれません。
■フラグが立ったままログインを試みようとしたときに
 何らかの対処が必要かもしれません。

分散ストレージでもそうですが、どこかに情報を持つということは
いろいろリスクがありそうですね。
(考慮済みならば問題ないと思います!)
とりあえず、別のアイデアとして、Windowsログオン認証を利用するというのはどうでしょうか?
こんにちは。
メジャーなやりかたを伺いたかったのですが、「○○○に決まっているではないか!!」というのはなさそうですね。

いろいろ参考にさせていただきます。ありがとうございました。

DOBON.NET | プログラミング道 | プログラミング掲示板