Pertanyaan Sesi Waktu Sesi CakePHP hanya tidak aktif


Jadi inti pertanyaan ini adalah bagaimana mencegah CakePHP membatalkan sesi HANYA setelah periode tidak aktif.

Jadi, jika pengguna tidak melakukan apa pun, saya mengharapkan CakePHP untuk logout setelah 30 menit. Namun, jika pengguna memilih untuk mengunjungi halaman pada 28 menit ketidakaktifan, maka CakePHP harus 'mengatur ulang' waktunya habis.

Ini saat ini tidak terjadi. Terlepas dari aktivitas, CakePHP akan keluar setelah waktu yang ditentukan dalam konfigurasi inti saya (app / Config / core.php).

Berikut kode konfigurasi saya:

Configure::write('Session', array(
    'defaults' => 'cake',
    'timeout' => '30'
));

Ada ide?


24
2018-01-22 23:35


asal


Jawaban:


Setelah mengalami masalah yang sama saya menemukan bahwa ini disebabkan oleh nilai Session.cookieTimeout. Meskipun sesi php masih valid, tanggal kedaluwarsa pada cookie sesi tidak disegarkan.

Ini sekarang adalah konfigurasi sesi saya

Configure::write('Session', array(
        'defaults' => 'php',
        'timeout' => 30, // The session will timeout after 30 minutes of inactivity
        'cookieTimeout' => 1440, // The session cookie will live for at most 24 hours, this does not effect session timeouts
        'checkAgent' => false,
        'autoRegenerate' => true, // causes the session expiration time to reset on each page load
    ));

26
2018-05-21 10:19



Selagi timeout nilai disetel ulang pada setiap tampilan halaman dan karenanya memberikan "waktu tidak aktif" yang Anda perlukan, tanggal kedaluwarsa cookie sesi browser tetap konstan.

Jadi sementara sesi Cake akan secara internal (internal = internal untuk Cake) masih hidup jika Anda refresh pada menit ke-28 + 35 menit, browser akhirnya menghapus cookie sesi setelah menit ke-30.

Anda dapat mengatur ulang tanggal kedaluwarsa cookie sesi melalui $this->Session->renew(). Atau atur autoRegenerate = true dan requestCountdown = 1 dan Cake akan diperbarui pada setiap tampilan halaman.

(Tapi itu agak konyol bahwa Anda harus meregenerasi sesi pada setiap tampilan halaman. Seperti, tanpa renew(), yang timeout nilai tidak akan pernah ikut bermain karena cookie akan selalu kedaluwarsa pada tanggal tetap, tidak peduli berapa banyak aktivitas. Sepertinya ini bug tetapi saya belum mencari solusi.)


8
2018-01-23 05:35



Saya memiliki masalah yang sama dan saya memperbaikinya dengan menggunakan autoRegenerate pilihan:

Configure::write(
    'Session',
    array(
        'defaults' => 'cake',
        'timeout' => '30',
        'autoRegenerate' => true
    )
);

Anda juga bisa menggunakan $this->Session->renew(); di dalam kamu AppController.php kelas, tetapi solusi di atas adalah favorit saya.


4
2018-01-23 04:03



jawaban Rob Forrest adalah yang benar

Configure::write('Session', array(
        'defaults' => 'php',
        'timeout' => 30, // The session will timeout after 30 minutes of inactivity
        'cookieTimeout' => 1440
));

cookieTimeout harus lebih besar daripada waktu tunggu jika Anda ingin sesi berakhir hanya saat tidak aktif maka Anda perlu mengatur cookieTimeout untuk jumlah yang sangat besar (misalnya 60 * 24 * 10 (10 hari))


2
2018-04-06 07:51



    Configure::write('Session', array(
    'defaults' => 'cake',
    'timeout' => 1440, // The session will timeout after 30 minutes of inactivity
    'cookieTimeout' => 1440, // The session cookie will live for at most 24 hours, this does not effect session timeouts
    'checkAgent' => false,
    'autoRegenerate' => true, // causes the session expiration time to reset on each page load
));

Ini berfungsi, meskipun sesi berakhir setelah beberapa jam, itu masih lebih baik daripada berakhir dalam hitungan menit.


0
2018-02-20 09:29