- PR -

[ASP.net]自分以外のセッション状態オブジェクトを削除する方法

1
投稿者投稿内容
うこたん
常連さん
会議室デビュー日: 2006/07/14
投稿数: 34
投稿日時: 2007-12-05 13:35
お世話になります。
現在セッション状態にあるセッションを知り、そこから任意のセッション状態オブジェクトを削除したいのですが可能なのでしょうか?
調べていくうちに「セキュリティ上無理」というキーワードがいくつか出てきましたが
例えば、直接削除ではなくデータベースにセッションIDを格納しておき、そのIDから削除するようなことはできないでしょうか?
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-12-05 14:54
そもそもなんでそんなことがしたいのでしょう。
もしできたとして、今まで使ってた人は急におかしな動きを見せられることになります。
それでもいいのでしょうか?

それぐらいならApp_Offline.htm使って一時的にサイトを停止させたほうがよっぽどユーザフレンドリーな対処になるような気がします。

#ASP.NET 2.0じゃないと使えないけど。
うこたん
常連さん
会議室デビュー日: 2006/07/14
投稿数: 34
投稿日時: 2007-12-05 20:52
引用:

どっとねっとふぁんさんの書き込み (2007-12-05 14:54) より:
そもそもなんでそんなことがしたいのでしょう。
もしできたとして、今まで使ってた人は急におかしな動きを見せられることになります。
それでもいいのでしょうか?


セッションにログイン情報を持たせており、強制的にログアウトさせるためです。
データベースを使ってログイン情報を取得するという方法もありますが、
毎回監視しなくてはならないので上記の方法が一番容易だと考えました。
ですのでおかしな動きを見せられても問題ありません。

引用:

それぐらいならApp_Offline.htm使って一時的にサイトを停止させたほうがよっぽどユーザフレンドリーな対処になるような気がします。

#ASP.NET 2.0じゃないと使えないけど。


この方法だと全てのユーザーに影響が出てしまいますので、任意のユーザーのみにしたいのです。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-12-06 11:17
セッションの情報をinproc(メモリ上)ではなく、SQLデータベース上に持つようにしてあれば、データベースの中を見ることで情報を一覧できるように思います。
だれがどのセッションを利用しているかを確認するにはなにか一工夫必要かもしれませんが。
該当するデータをデータベースから削除する仕組みをつくればうまくいくかもしれませんね。
よこけん
大ベテラン
会議室デビュー日: 2006/01/31
投稿数: 216
投稿日時: 2007-12-06 13:46
ログアウト対象ユーザーの次回アクセス時に処理を行うということでも良ければ、
アプリケーションステートを利用することで、セッション削除をせずに済むかもしれません。
この場合、アプリケーションステートに対象ユーザーを示す ID を保持させておき、
アクセスのたびにそれを検証することになります。
_________________
C#と諸々
うこたん
常連さん
会議室デビュー日: 2006/07/14
投稿数: 34
投稿日時: 2007-12-12 11:51
リクエストのタイミングで毎回ログイン状態をチェックし、ログアウト状態だったらセッションを削除することで落ち着きした。
返答が遅れましたが、アドバイスありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)