मैं ऐसे एप्लिकेशन पर काम कर रहा हूं जिसमें कई उप-अनुप्रयोग हैं और मैं 30 मिनट की निष्क्रियता के बाद ऑटो लॉगआउट लागू करना चाहता हूं। मैं लॉगिन के साथ आपके AuthController है और कस्टम/लॉगिन और/लॉगआउट मार्गों Bootstrap.php का उपयोग कर के साथ-साथ एक सामने नियंत्रक प्लगइन है कि इस तरह दिखता है पर मैप किए गए कार्यों लॉगआउट:निष्क्रियता के बाद ज़ेंड फ्रेमवर्क स्वचालित लॉगआउट
class Plugin_SessionTrack extends Zend_Controller_Plugin_Abstract {
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$employeeSession = new Zend_Session_Namespace('employeeSession');
$employeeSession->setExpirationSeconds(10);
}
}
मैं PHP और Zend के लिए नया हूँ , 10 सेकंड के बाद सत्र में वास्तव में क्या हो रहा है? मैंने परीक्षण के लिए इसे कम सेट किया है। मैं क्या करना चाहता हूं कि अगर फ्रंट कंट्रोलर प्लगइन के माध्यम से अंतिम अनुरोध का समय 30 मिनट पहले से अधिक था, सत्र को नष्ट कर दें और उपयोगकर्ता को लॉग आउट करें और उन्हें/लॉगिन पर रीडायरेक्ट करें।
मैं स्पष्ट रूप से देख सकता हूं कि मैं अंतिम अनुरोध के समय को ट्रैक नहीं कर रहा हूं, लेकिन मेरी आशा थी कि जब भी उपयोगकर्ता को इस प्रीडिस्चैच विधि के माध्यम से अनुरोध किया जाए तो सेट एक्सपेरेशन सेकेंड को रीफ्रेश किया जाएगा।
शायद एक कुकी की आवश्यकता है? मुझे वास्तव में लॉगआउट एक्शन शुरू करने की आवश्यकता नहीं है, अगली बार जब उपयोगकर्ता अनुरोध करता है तो इसे संभाला जा सकता है, अगर उन्होंने पिछले आधे घंटे में कुछ भी नहीं किया है तो सत्र नष्ट हो गया है और वे लॉग आउट हैं, जिसका अर्थ है अगर मैं 45 मिनट तक चलता हूं तो मेरी स्क्रीन अभी भी वही दिखती है, लेकिन अगर मैं एक लिंक पर क्लिक करता हूं या एक फॉर्म को आज़माता हूं और सबमिट करता हूं तो मैंने इसे भेज दिया/लॉगिन किया। मैं बाद में कुछ प्रकार की जेएस उलटी गिनती चेतावनी के बारे में चिंता कर सकता हूं।
संपादित करें: यहाँ मेरी बूटस्ट्रैप अगर किसी को भी यह देखना चाहता है:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
/**
* Custom routes:
*
* /login
* /logout
*/
protected function _initRoutes()
{
$router = Zend_Controller_Front::getInstance()->getRouter();
$loginRoute = new Zend_Controller_Router_Route('login', array('controller' => 'auth', 'action' => 'login'));
$logoutRoute = new Zend_Controller_Router_Route('logout', array('controller' => 'auth', 'action' => 'logout'));
$routesArray = array('login' => $loginRoute, 'logout' => $logoutRoute);
$router->addRoutes($routesArray);
}
protected function _initPlugins()
{
$frontController = Zend_Controller_Front::getInstance();
$frontController->registerPlugin(new Plugin_SessionTrack());
}
}
सबसे पहले 'निष्क्रियता' को परिभाषित करें। हम php में देख सकते हैं सर्वर अनुरोध है। मुझे वास्तव में यह सुझाव देने से नफरत है, लेकिन आप गतिविधि की निगरानी के लिए जावास्क्रिप्ट का उपयोग करना चाहेंगे और जब यह 'टाइम आउट' लॉगआउट विधि को कॉल करेगा। नेमस्पेस की समाप्ति आपको जो चाहिए वह प्रतीत नहीं होती है। – RockyFord
निष्क्रियता का अर्थ है कि उपयोगकर्ता ने एक फॉर्म पोस्ट नहीं किया है, वे नियंत्रक में कार्रवाई नहीं कर रहे हैं। असल में वे "कीबोर्ड से दूर" हैं। इस घर के उप अनुप्रयोगों को काफी डेटा संचालित किया जाता है, इसलिए यह स्पष्ट होना चाहिए कि यदि वे नियंत्रक (क्रियाएं) को मार नहीं रहे हैं तो वे एप्लिकेशन का उपयोग नहीं कर रहे हैं। –