0

私は自分のWebアプリケーションでユーザーを認証するために、AuthComponentと一緒にcakephp 2を使用しています。ユーザーが非常に長い時間 (少なくとも 24 時間、それ以上または無期限に) 自動的にログアウトされないようにすることが重要です。その理由は、現在サインインしているユーザーがパスワードの入力を強制することなく数秒以内に利用できるようにする必要がある多くのものを CakePHP Web アプリケーションに保存するためです。このため、私はすでに設定Security.levelしてlowおり、実装もしています

Configure::write('Session.timeout', 3000);

これにより、ユーザーがログアウトするまでの 2 日間の猶予が与えられるはずです。それでも、ユーザーが同じ分以内にアクティブだったとしても、ログアウトされることがあります。いつ発生するのか、どのように再現するのかはよくわかりませんが、何かを見落としているのではないか、他の戦略が問題の解決に役立つのではないかと思いました.

Web サーバーとして、Ubuntu 12.04 で標準の apache を使用していますが、特別な構成変更は必要ありません。

4

2 に答える 2

0
CREATE TABLE cake_sessions (
  id varchar(255) NOT NULL default '',
  data text,
  expires int(11) default NULL,
  PRIMARY KEY  (id)
);

次に、core.php でセッション設定を次のように変更します。

Configure::write('Session', array(
    'defaults' => 'database',
    'timeout' => 43200,
    'cookieTimeout' => 43200
));

この設定は 1 か月のセッション用です

于 2014-10-28T16:38:19.273 に答える
0

これを効果的に機能させるには、これを 2 つの部分に分けて行います。あなたが使用しているコンポーネントについて具体的に話すことはできませんが、操作の一般的な理論を提供することはできます.

PHP セッションは、長く続くものと考えるべきではありません。ユーザーがサイトにいる間はアクティブになりますが、最終的にはクリーンアップされます。では、ユーザー セッションを「無期限」にするにはどうすればよいでしょうか。

ユーザーがログインすると、一意のワンタイム ハッシュが作成されます。このハッシュはユーザーによって Cookie として保存され、データベースでも参照する必要があります (ハッシュが関連付けられているユーザーに対して)。

このハッシュは、代替ログイン パスを提供します。ユーザーがサイトに戻ってセッションがない場合、ログイン ページに誘導する代わりに、ユーザーが Cookie を持っているかどうかを確認します。その場合は、再度ログインできます。

そのハッシュを一度だけ使用できるようにすることが重要です。ハッシュを使用してセッションを作成した後、新しいセッションを生成し、Cookie とデータベースを新しいハッシュで更新する必要があります。

注意事項:

  • ハッシュは一意で、ランダム データで生成される必要があります。簡単に偽造できるものであってはなりません。
  • ユーザーが複数のデバイスでサイトにアクセスする場合、各デバイスが独自の一意のハッシュを持つ可能性があるため、データベースの設計に留意してください。
  • ハッシュを簡単に傍受できないように、SSL を使用することをお勧めします。
  • 古いハッシュを使用してサイトにログインできないように、ハッシュは一定の時間で期限切れになる必要があります。
于 2013-01-07T19:21:08.413 に答える