जब से तुम काफी अपने प्रश्न में सटीक विवरण प्रदान नहीं किया, मुझे लगता है कि आप एक स्थिति है जहाँ है:
- आप एक UserDetails लोड करने के लिए जब कोई उपयोगकर्ता के लिए लॉग इन करने के लिए प्रयास करता है
एक UserDetailsService आपूर्ति कर रहे हैं
- उस सेवा के एक हिस्से के रूप में, आप किसी उपयोगकर्ता की अनुमतियों के बारे में विवरण लोड करने के लिए डेटाबेस/डीएओ से पूछताछ कर रहे हैं, और
- पर आधारित प्राधिकरणों को सेट कर रहे हैं, जब आप कहते हैं कि "जब मैं अनुमतियां अपडेट करता हूं" तो आप हैं डेटाबेस में उपयोगकर्ता की अनुमतियों को अपडेट करने का जिक्र करते हुए (या जो भी आप डेटा संग्रहित कर रहे हैं)।
यदि ऐसा है तो आप जो डिज़ाइन देख रहे हैं वह डिज़ाइन द्वारा है - स्प्रिंग सिक्योरिटी केवल उपयोगकर्ता के लिए उपयोगकर्ता के विवरण लोड करती है, जब वे लॉगिन करने का प्रयास करते हैं, और उसके बाद सत्र में इसे स्टोर करते हैं। आम तौर पर यह समझ में आता है, क्योंकि यह एप्लिकेशन को प्रत्येक अनुरोध पर उपयोगकर्ता विवरण के बारे में समान प्रश्न करने से रोकता है। साथ ही, उपयोगकर्ता की अनुमतियां आम तौर पर 99.9% यात्राओं में नहीं बदलती हैं।
इस व्यवहार को बदलने के लिए, आप कहीं भी "रीफ्रेश" कमांड/पेज जोड़ना चाहते हैं जो कुछ कोड (जिसे आपको लिखना होगा) ट्रिगर करेगा जो UserDetailsService को दोबारा पूछेगा और UserDetails को सुरक्षा कॉन्टेक्स्ट में बदल देगा । मुझे विश्वास नहीं है कि ऐसा करने के लिए कोई अंतर्निहित तरीका है।
स्रोत
2009-05-21 12:49:11
एक संभावित समाधान का वर्णन किया गया है [वास्तविक समय में सुरक्षित सत्र समायोजित करना] (http://spring.io/blog/2009/01/03/spring-security-ustomization-part-2- समायोजन- सुरक्षित- सत्र- इन-रीयल-टाइम) स्प्रिंग सोर्स ब्लॉग पर पोस्ट करें। – Karimchik
इसमें कुछ समय लगा, लेकिन मुझे लगता है कि अंत में यह पता चला था: http://stackoverflow.com/q/23072235/42962 – hooknc