काम करने के लिए शिरो के SecurityUtils.getSubject()
को समझने का मूल तरीका यह है कि यह वर्तमान में निष्पादित थ्रेड से जुड़ा विषय है। हालांकि, यह सिर्फ टोमकैट जैसे सर्वलेट कंटेनर के साथ बाधाओं में प्रतीत होता है जो सेवा अनुरोधों के लिए थ्रेड पूल का उपयोग कर रहा है।शिरो एक बहु थ्रेडेड वातावरण में
यदि टॉमकैट अनुरोधों को संभालने के लिए थ्रेडए का उपयोग कर कहता है, तो SecurityUtils.getSubject()
पर किसी भी कॉल को ठीक काम करना चाहिए। लेकिन, जैसे ही थ्रेडबी का चयन किया जाता है, उपयोगकर्ता खो जाता है, getSubject
शून्य लौटाता है और प्रमाणीकृत अब गलत है। यह तब भी है जब उपयोगकर्ता अभी भी लॉग इन है।
मैंने अपने आवेदन में इसकी पुष्टि की है। मैं शिरो कोर 1.2 का उपयोग कर रहा हूं और नोटिस करता हूं कि जब मैं अपने ऐप से नेविगेट करता हूं तो मेरा उपयोगकर्ता केवल चमत्कारिक रूप से अनचाहे होता है। अगर मैं लॉग देखता हूं, तो समस्या के अनुरोध के लिए एक अलग थ्रेड का उपयोग होने पर समस्या होती है।
तो, क्या मेरे पास शिरो गलत तरीके से कॉन्फ़िगर किया गया है? ऐसा लगता है कि 'वर्तमान उपयोगकर्ता' को वर्तमान धागे की तुलना में कुछ और लंबे समय तक चलना चाहिए। मैं उम्मीद करता हूं कि यह सत्र-आधारित हो। मुझे पता है कि शिरो के पास सत्र प्रबंधन है, लेकिन मैंने पाया है कि सभी उदाहरणों में, यह getSubject
पर कॉल करके वर्तमान उपयोगकर्ता को प्राप्त करने के लिए कहता है, जो थ्रेडकॉन्टेक्स्ट को देखता है। क्या मैं कुछ भूल रहा हूँ?
इस अच्छी तरह से लिखित प्रतिक्रिया के साथ रिपोर्ट करने के लिए धन्यवाद! –
मेरे पास 'SecurityUtils.getSubject()' के बारे में कुछ सवाल है। चूंकि टॉमकैट कंटेनर में एक थ्रेड पूल है, इसलिए एक धागा बहु-विषयों से जुड़ा हो सकता है? – znlyj