2012-03-12 8 views
3

私はAuthを使ってログインシステムを持つCakePHP 1.3.10ウェブサイトを持っています。同じユーザー名とパスワードが異なる場所から同時にログインするのを防ぐにはどうすればよいですか?すでにログインしているユーザーが別の場所からログを記録したときに、最初のものが追い出されるように動作するはずです(最後のものが自分のWebサイトを使用し続けることができます)。cakephpは同時に複数の場所からのユーザーログインを防止します

私はいくつかの研究を行ってきましたが、私は「十分に良い」解決策を見つけることができません。ユーザーがログインすると、単純なブール値が1に格納されているように見えますが、私が記述した方法でこの作業を行うにはどうすればよいか分かりません。

簡単な点は、ユーザーがログアウトしたときにその値を0に変更することです。ただし、ブラウザを閉じただけの場合はどうなりますか?ユーザーがログインしてブール値がすでに1に設定されている場合はどうすればよいですか?どのように私は "古い"ユーザーにキック? 、それを行うデータベース駆動型のセッションを使用するように設定/ core.phpのを変更するためには

何かアドバイスをいただければ幸いです...

答えて

3

。デフォルトDBの設定を使用すると、ほとんどの場合、たいと思うものです使用

//Configure::write('Session.database', 'default'); 

Configure::write('Session.save', 'database'); 

その後、また次の行のコメントを解除します。その後

、ケーキコンソールを使用して、セッションをホストするためにデータベースを準備します

cake schema create Sessions 

最後に、ログインアクションで、削除/セッションが既にだけでログインしたユーザーのために存在するかどうかを確認し、無効セッションテーブルからの古いセッション

私は以前この方法を使っていませんでしたが、ユーザーID /ユーザー名がセッションテーブルのdataフィールドに格納されていることがわかりました(おそらくシリアル化された配列などがあります)。

+0

ご返信ありがとうございます。私は質問がある:ケーキコンソールからそのコマンドを実行すると、DBにテーブルが作成されますか?もしそうなら、どのように私はどのようなDBを作成する(私のWebで私は2つの異なるDBを使用している)を選択することができますか? – Albert

+0

@Albertそれはあなたのコア設定で 'Session.database'値を設定する必要があります。あなたが設定したものは、テーブルの作成に使用する必要があります。あるいは、疑わしいときにスキーマファイルを "読み"、手動で作成することもできます。 – Oldskool

+0

ありがとう、私はこれを試してみましょう! – Albert

関連する問題