- - PR -
「ASP.NET」 接続ユーザの確認方法
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-13 09:11
chamiと申します。
DBサーバ:Windows2003 Oracle10g Webサーバ:Windows2003 開発マシン環境:WindowsXP ProSP2 VS.NET2003 Framework1.1SP1 oracle接続 ODP.NET 10.1.0.301 現在Webアプリケーションにログインしているユーザを 確認する方法はありませんでしょうか? ぱっと思いつくところでは、ログイン管理テーブルを設けて そのテーブルを確認するという方法ですが・・・ それ以外で何かご存知の方いらっしゃいましたら ご教授願えないでしょうか? 以上、よろしくお願い致します。 | ||||||||||||
|
投稿日時: 2005-07-13 09:19
それはユーザー認証をどのような方法で行うのかが分からなければ、答えようが無いと思いませんか?ログイン管理テーブルを設けるのは十分現実的な方法だと思いますけど。 | ||||||||||||
|
投稿日時: 2005-07-13 09:43
chamiです。
甕星さんご回答ありがとうございます。 説明不足で申し訳ありません。 このWebアプリケーションはイントラ内での Webアプリケーションになっております。 ユーザは、ログインページで、ID・パスワードを入力します。 そのIDとパスワードをサーバ側で顧客マスタにアクセスして チェックしています。 顧客マスタにそのIDが存在したら、Session("ID")=入力したID を保存し、各画面でそのSession変数があるかどうかを判断しています。 そのSession変数の一覧を確認したり、もしくはWebサーバにアクセスしている ユーザ(コンピュータ名やIPアドレスなど)を確認したりできないかを知りたいと思い投稿致しました。 ちなみにIIS側での認証方法は、 匿名アクセスを有効(Windowsユーザアカウントは、インターネットゲストアカウント)、 認証済みアクセスは 統合Windows認証にしております。 以上、よろしくお願い致します。 | ||||||||||||
|
投稿日時: 2005-07-13 10:04
ログインした時にログイン管理テーブルにデータを書き込んで、セッションが切れるとき(Global.asaxのSession_Endで)レコードを削除するというのはどうですか。
セッション情報を格納する場所をワーカープロセス内にしていないとSession_Endは動作しないという話を聞いたことがありますが・・・。 | ||||||||||||
|
投稿日時: 2005-07-13 10:45
一郎さん、ご回答ありがとうございます。
やはりユーザ管理という意味では、 管理テーブルを利用してチェックした方がいいみたいですね。 ご提示されたものを参考に検討したいと思います。 ただ、oracle10gのEnterprise Manegerみたいにアクティブなセッションとかを IIS側で確認できたらなぁとか思ってみたりしたんですが 無理ですかね(^^; | ||||||||||||
|
投稿日時: 2005-07-13 11:08
セッションでログイン情報を管理する場合の、
留意事項を書かせていただきます。 回答からは外れてますが、関連分野の情報提供ってことで勘弁を。 【多重ログイン時のSession管理】 ・ブラウザを複数立ち上げて、それぞれから同じIDでログインするケース。 ・Aクライアント、Bクライアントから同じIDでログインするケース。 →ブラウザ単位にセッションが張られてしまうので、一人のユーザが複数のセッションを持ってしまう。(これが問題になるかどうかは、システム次第) 【セッションをInprocに保持している場合】 ・複数のWebサーバを使用した場合には、サーバ毎にセッション情報をもってしまう。 ・ワーカープロセスがリサイクルされた場合、セッション情報も消えてしまう。 (これは強制ログアウトの状態のため、それはそれで整合性は取れている) さんざん既出ですが、 テーブル管理したほうが問題が単純になっていいですよ。 イントラ内のシステムですし。 おっと、書いてる間にCloseしかかってた・・ | ||||||||||||
|
投稿日時: 2005-07-13 11:27
思いつきですが、Cacheを使うとか。
各ページで
ログイン情報の列挙
| ||||||||||||
|
投稿日時: 2005-07-13 15:13
葉瀬崎浩樹さん、todoさん
ご回答ありがとうございます。
現在まさにこの状態で管理しております。これは顧客了解済みです。
複数のWEBサーバを立ち上げる事は現状ではないのでそのままデフォルトの Inprocでセッションを使用しております。
Cache.Insertは、使用したことがないので試して見ます。 もし使えそうならまた報告致します。 いろいろご教授いただきましたが、素直に管理テーブルを 用意した方がよさそうですね(^^; |
1