2013-07-09 10 views
5

के बाद सत्र को रीसेट करता है मैं अपने वेबपैप में अपाचे शिरो का उपयोग कर रहा हूं।शिरो 2 मिनट

मैं सत्र में कुछ पैरामीटर स्टोर करता हूं विशेष रूप से डेटाबेस में संग्रहीत ऑब्जेक्ट की प्राथमिक कुंजी।

जब उपयोगकर्ता लॉग इन करता है, तो मैं डेटाबेस से डेटाबेस लोड करता हूं और सत्र में प्राथमिक कुंजी को सहेजता हूं। फिर ऐप के भीतर उपयोगकर्ता ऑब्जेक्ट के डेटा को संपादित कर सकता है और या तो रद्द या सहेजने वाला बटन दबा सकता है।

दोनों बटन एक आरपीसी ट्रिगर करते हैं जो सर्वर पर अद्यतन डेटा प्राप्त करता है। ऑब्जेक्ट को सत्र में संग्रहीत प्राथमिक कुंजी का उपयोग करके डेटाबेस में अद्यतन किया जाता है।

यदि उपयोगकर्ता ऐप में सक्रिय रहता है (कुछ आरपीसी बनाते हैं) सब कुछ ठीक काम करता है। लेकिन अगर वह 3 मिनट के लिए निष्क्रिय रहता है और बाद में एक आरपीसी बनाता है तो शिरो का securityUtils.getSubject().getSession() शून्य देता है।

सत्र समय समाप्ति 1,200,000 एमएस (20 मिनट) पर सेट है, इसलिए मुझे नहीं लगता कि यह मुद्दा है।

जब मैं अपने सत्र प्रबंधक के कैश में संग्रहीत सत्रों में जाता हूं तो मैं उपयोगकर्ता के सत्र org.apache.shiro.session.mgt.SimpleSession,id=6de78f10-b58e-496c-b40a-e2a9a4ad069c देख सकता हूं लेकिन जब मैं कुकी से सत्र आईडी प्राप्त करने का प्रयास करता हूं और सत्र प्राप्त करने के लिए SecurityUtils.getSecurityManager().getSession(key) पर कॉल करता हूं (जहां कुंजी है सत्रकी कार्यान्वयन): मुझे अपवाद मिलता है।

जब मैं सत्र आईडी से एक नया विषय बनाने का प्रयास करता हूं तो मैं सत्र में सहेजी गई सभी विशेषताओं को खो देता हूं।

मुझे इस मुद्दे को हल करने में मदद के लिए कुछ कोड पोस्ट करने में खुशी हुई है, लेकिन मैंने इतने सारे कामकाज की कोशिश की कि मुझे नहीं पता कि कहां से शुरू करना है ... तो कृपया मुझे बताएं कि आपको क्या चाहिए।

वैकल्पिक रूप से अगर किसी को Shiro तुलना में एक बेहतर प्रलेखित ढांचे मैं सभी कान हूँ

उत्तर

7

मुद्दा INI फ़ाइल में सत्र config से संबंधित था (दस्तावेज की Shiro की कमी यह वास्तव में बहुत समय लगता है) को जानता है। शिरो के साथ सामान्य रूप से ऑर्डर mattered और मेरी कुछ लाइनें जगह से बाहर थे।

sessionDAO = org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO 
#sessionDAO.activeSessionsCacheName = dropship-activeSessionCache 
sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager 
sessionManager.sessionDAO = $sessionDAO 
# cookie for single sign on 
cookie = org.apache.shiro.web.servlet.SimpleCookie 
cookie.name = www.foo.com.session 
cookie.path =/
sessionManager.sessionIdCookie = $cookie 
# 1,800,000 milliseconds = 30 mins 
sessionManager.globalSessionTimeout = 1800000 
sessionValidationScheduler = 
org.apache.shiro.session.mgt.ExecutorServiceSessionValidationScheduler 
sessionValidationScheduler.interval = 1800000 
sessionManager.sessionValidationScheduler = $sessionValidationScheduler 
securityManager.sessionManager = $sessionManager 
cacheManager = org.apache.shiro.cache.ehcache.EhCacheManager 
securityManager.cacheManager = $cacheManager 
+0

तो फिक्स क्या था? यह आपके उत्तर से स्पष्ट नहीं है, क्योंकि आपने समझाया नहीं है कि आपने क्या बदल दिया है या मूल कॉन्फ़िगरेशन पोस्ट किया है। – frhd

4

ऐसा लगता है के रूप में यदि आप पहले से ही आपकी समस्या को हल कर दिया है:

नीचे config कि मेरे लिए काम किया है। जैसा कि आपने पाया, शिरो आईएनआई फ़ाइल के साथ ध्यान में रखना मुख्य बात यह है कि आदेश महत्वपूर्ण है; फ़ाइल को क्रम में पार्स किया गया है, जो वास्तव में कॉन्फ़िगरेशन में उपयोग की जाने वाली वस्तुओं के निर्माण के लिए उपयोगी हो सकता है। http://www.javacodegeeks.com/2012/05/apache-shiro-part-1-basics.html और http://www.ibm.com/developerworks/web/library/wa-apacheshiro/:

जब से तुम प्रलेखन के Shiro की कमी का उल्लेख किया है, मैं आगे जाना है और दो ट्यूटोरियल है कि मैं जब शुरू करने उपयोगी पाया कहना चाहता था।

कुछ अन्य ब्लॉग पोस्ट हैं जो आधिकारिक दस्तावेज़ीकरण को पूरक करने के लिए अच्छी जानकारी प्रदान करते हैं यदि आप चारों ओर देखते हैं।

शुभकामनाएं!

संबंधित मुद्दे