Zend_Session regenerateId kullanırken kaybetti ()

3 Cevap php

Ben şimdi ZF uygulamaları bir çift bu sorunu yaşadım ve bu çok sinir bozucu:

Benim bootstrap üstüne yakın Ben şu iki satır var

Zend_Session::start();
Zend_Session::regenerateId();

Benim uygulama Zend_Auth kullanarak kimlik doğrulaması gerektiren ve bir kimlik ısrarcı için varsayılan oturum depolama kullanır. Rastgele oturum kullanıcı dışarı açmış etkisi veren kaybolur. Ben Zend_Session için çağrı :: regenerateId kaldırırsanız () oturumu kayıp değildir.

Ben bu çalışma almak istiyorum böylece session id yenileyici güvenliğini artırır. Bu sorun, hem benim yerel kalkınma sunucu (dönüş) oluşur ve bizim hazırlama sunucusu (linux)

3 Cevap

Sorunuzu okuduktan sonra soruna bir çözüm arıyor edilmiştir. Aslında Zend Framework göre: Dokümantasyon çözümü kolay sessiz.

"Bir kullanıcı web sitenize başarılı bir oturum varsa, yerine regenerateId of RememberMe () () kullanın."

Ben bu size yardımcı olacağını umuyoruz.

Selamlar,

Younes

[Edit: bu buldum nerede link bu: Zend Framework: Documentation

Ben Zend_Session ile ilgili bir sorun yaşadım. Sizin oturumu nedeniyle aşağıdaki sorunu kaybolmuş olabilir:

Bu kullanmayı deneyin:

Zend_Session::rememberMe(100); // any value here

Sonra (örneğin, kullanıcı olarak giriş) sizin oturum veri seti ile uygulama sayfalarınıza birine gitmek ve 3-5 kez çok hızlı bir şekilde (çift tıklayarak) gibi tarayıcı yenileme butonuna tıklayın. Eğer oturum veri kayboldu olduğunu görürsünüz: (

Ben bu ile anlaşma olabilir tek yolu şimdilik RememberMe () yöntemini kullanarak değil gereğidir. Birilerinin burada bu konuda ışık tutacak umuyoruz. Ne Bence sunucuya tarayıcıdan sonraki çağrıları varolan bir oturum kimliği ile ilişkili alamadım böylece regenerateId () yöntemi, bir şekilde çerez değerini haberci yukarıya olmasıdır.

Oturum çerezi kullanırken çerez son şey Tamam olduğunda ben, aynı sorun var.

Beni işlev hatırlıyorum kullanırken son kullanma tarihi bir parametre olarak verilen saniye olarak ayarlanır.

Benim çözüm her 5 istekleri id yenileyici, $application->bootstrap()->run(); yeni Zend_Application oluşturduktan sonra ve çağrı önce index.php oturum rejenerasyon kod koymak oldu.

/** Zend_Application */
require_once 'Zend/Application.php';


// Create application, bootstrap, and run
$application = new Zend_Application(
                APPLICATION_ENV,
                APPLICATION_PATH . '/configs/application.ini'
);

// set httponly option (when set in application.ini it dosent work) 
Zend_Session::setOptions(array('cookie_httponly' => true));

//regenerate sessionid after 5 hits
$defaultNamespace = new Zend_Session_Namespace();
if ($defaultNamespace->initialized > 3) {
    Zend_Session::regenerateId();
    $defaultNamespace->initialized = 0;
} else {
    $defaultNamespace->initialized++;
}

//run application
$application->bootstrap()->run();