- - PR -
[ASP.net]自分以外のセッション状態オブジェクトを削除する方法
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-12-05 13:35
お世話になります。
現在セッション状態にあるセッションを知り、そこから任意のセッション状態オブジェクトを削除したいのですが可能なのでしょうか? 調べていくうちに「セキュリティ上無理」というキーワードがいくつか出てきましたが 例えば、直接削除ではなくデータベースにセッションIDを格納しておき、そのIDから削除するようなことはできないでしょうか? | ||||||||
|
投稿日時: 2007-12-05 14:54
そもそもなんでそんなことがしたいのでしょう。
もしできたとして、今まで使ってた人は急におかしな動きを見せられることになります。 それでもいいのでしょうか? それぐらいならApp_Offline.htm使って一時的にサイトを停止させたほうがよっぽどユーザフレンドリーな対処になるような気がします。 #ASP.NET 2.0じゃないと使えないけど。 | ||||||||
|
投稿日時: 2007-12-05 20:52
セッションにログイン情報を持たせており、強制的にログアウトさせるためです。 データベースを使ってログイン情報を取得するという方法もありますが、 毎回監視しなくてはならないので上記の方法が一番容易だと考えました。 ですのでおかしな動きを見せられても問題ありません。
この方法だと全てのユーザーに影響が出てしまいますので、任意のユーザーのみにしたいのです。 | ||||||||
|
投稿日時: 2007-12-06 11:17
セッションの情報をinproc(メモリ上)ではなく、SQLデータベース上に持つようにしてあれば、データベースの中を見ることで情報を一覧できるように思います。
だれがどのセッションを利用しているかを確認するにはなにか一工夫必要かもしれませんが。 該当するデータをデータベースから削除する仕組みをつくればうまくいくかもしれませんね。 | ||||||||
|
投稿日時: 2007-12-06 13:46
ログアウト対象ユーザーの次回アクセス時に処理を行うということでも良ければ、
アプリケーションステートを利用することで、セッション削除をせずに済むかもしれません。 この場合、アプリケーションステートに対象ユーザーを示す ID を保持させておき、 アクセスのたびにそれを検証することになります。 _________________ C#と諸々 | ||||||||
|
投稿日時: 2007-12-12 11:51
リクエストのタイミングで毎回ログイン状態をチェックし、ログアウト状態だったらセッションを削除することで落ち着きした。
返答が遅れましたが、アドバイスありがとうございました。 |
1