2012-02-24 13 views
2

自動ログオンのためにZend rememberMe関数で実装されたRemember meチェックボックスを使用しています。私はこの条件をログインのためにコントローラの中に書いていますが、私はそれを(現在のログインが自動である限り)各自動ログインで7日間にリセットします。 0000 * 60 * 24 * 7; // 7日
Zend_Session :: rememberMe($ seconds);

アクセスごとにCookieを更新するデフォルトのzend機能はありますか? Btw、私は新しいコーディングです。誰かが私を助けることを願っています。ありがとう。自動ログインごとにZend rememberMe関数をリセットするには?

答えて

2

アクセスごとにZend_Session::rememberMe()を使用してCookieを設定する必要はありません。これは、rememberMe()を呼び出すたびに新しいセッションIDが生成され、クッキーが新しいIDで1つ置き換えられるためです。古いセッションのデータが新しいセッションにコピーされ、古いセッションが削除されます。

実際の害はありませんが、各リクエストでこれを行うにはオーバーヘッドがあります。 Zendによると、セッションが開始された後でこれを呼び出すことがベストプラクティスです。

また、各リクエストで無条件でこれを実行した場合、延長された時間とカジュアルブラウジングの後で自動ログインを区別する唯一の方法は、タイムスタンプをセッションに保存し、時間の制限を設定して、離れた人物を決定します。

代わりに、訪問者がログインページにアクセスしてログインするときにこれを行うことができます。あなたはそれらをリダイレクトすることができ、彼らは認証せずにログインします。

セッションクッキーを定期的に更新する場合は、セッションを開始した後にBootstrap.phpファイルにrememberMe()を呼び出すことができます。プラグインからセッションを開始した場合、またはコントローラで直接起動した場合は、セッションの開始後に覚えておくようにしてください。

Zend_Session::rememberMe()Zend Framework - Session Identifiersを呼び出すときに呼び出されるsession_regenerate_id()と、セッションハイジャックと固定に関する次のセクションを参照してください。

+0

zend docsは、セッションを開始する前にrememberMeを呼び出すと言っています。セッションが開始される前に、持続的なセッションクッキーが期限切れになるまでの時間を制御するためにZend_Session :: rememberMe()を使用してください。 " –

+0

正しく、クッキーの有効期限を制御するセッションが開始されます。この場合、 'rememberMe()'は 'Zend_Sesssion :: regenerateId()'も呼び出すので、 'regenerateId()'を呼び出すベストプラクティスは、セッションが開始された後に呼び出すことです。 Quで、彼はこれを頻繁にやりたいので、前の質問を再開した後に新しいIDを持つ新しいクッキーを設定するために、セッションが開始された後にやります。 – drew010

0

あなたはZend_sessionを使用してそれを行うことはできません。クッキーを使って私を覚えてください。

関連する問題