[PHP-users 4716] PHPlib:マルチログイン防止をガーベッジコレクションで対応するべきか

php-users@php.gr.jp php-users@php.gr.jp
Tue, 15 Jan 2002 16:59:51 +0900 (JST)


PHPlibのセッション管理と認証機構を利用した複数ユーザー向けサイトを
構築中です。
認証済みのユーザーと同じユーザーIDで別のクライアントマシンから
ログインされ、同じユーザーが複数認証されている状態を回避する方法
を検討しています。
ログイン画面で入力されたユーザーIDが既に認証済みであれば
ログインを無効処理するという構想でセッション管理機構を調べて
みました。
「AUTH」クラスの「auth_validatelogin()」関数をオバーライドして、
入力されたユーザーIDとパスワードを基に認証済みか否かを判断する
ことで実現できそうですが、判断処理がわかりせん。
クライアントマシンからのログイン処理で「is_authenticated()」メソッドを
呼び出したのでは常に無効と判断されてしまいます。
そこでPHPlibでセッション情報やユーザー認証情報の記録管理に利用
されているDB定義された「active_sessions」テーブルを参照して
判断しようと試みました。
私のサーバーではDBにPostgresSQLが設定されています。
このテーブルには認証済みユーザー情報が記録されていましたが、
ログアウトしても日付情報が変化するだけでテーブルに居座りつづけます。
設定時間を経過したなセッション情報がGCで削除される機構も
認証済み情報には作用しません。
この状態では認証済みか否かを判断することができないようです。
ということで、GCメソッドに認証済み情報の削除を追加して、
ログインされたユーザーIDが「active_sessions」テーブルに登録されて
いるときは、ログイン操作を拒否する処理で対応しよと思います。
しかし、これがベストか自信がありません。
他にスマートな手法があればご紹介下さい。

…・・  2002年は無料でADSL体験! www.livedoor.com
 無料で常時&高速接続するなら『livedoor フレッツプラン』!・・…