2012-07-18 23 views
9

हमारे आवेदन में हम RoleVoter तंत्र का उपयोग करने की योजना बनाई है, लेकिन हम ROLE_ उपसर्ग दूर करने के लिए सुरक्षा हम लागू कर रहे हैं के रूप में अधिक कार्य आधारितभूमिका आधारित से है या नहीं।स्प्रिंग सिक्योरिटी की रोलवॉटर को उपसर्ग की आवश्यकता क्यों है?

तकनीकी रूप से, कार्यान्वयन के लिए कोई समस्या नहीं है लेकिन मुझे प्रलेखन में मिला है कि using the RoleVoter with an empty prefix should be discouraged

मुझे आश्चर्य है क्यों?

AFAICS, केवल समस्या यह है कि, उपसर्ग के बिना, RoleVoter निर्णय है कि यह करने के लिए हो सकता है एक पहुँच एक बचना के बजाय से इनकार रिटर्न (जैसे IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED ... के रूप में) और कराना नहीं है, में भाग लेंगे है ।

क्या आप कृपया पुष्टि कर सकते हैं कि यह खाली उपसर्ग वाला एकमात्र मुद्दा है?

अग्रिम धन्यवाद एम

उत्तर

13

हां। यदि आप एकाधिक मतदाताओं या कस्टम मतदाता का उपयोग कर रहे हैं तो उन्हें कुछ तरीकों की आवश्यकता है कि उन्हें कौन से विशेषताओं का उपभोग करना चाहिए। उदाहरण के लिए, यदि आपके पास DayOfTheWeekVoter है और आपके पास ROLE_USER,DAY_MONDAY गुणों के साथ परिभाषित संसाधन है तो RoleVoter पहुंच प्रदान करने के लिए वोट दे सकता है क्योंकि उपयोगकर्ता की भूमिका "उपयोगकर्ता" है, लेकिन DayOfTheWeekVoter पहुंच से इनकार कर सकता है क्योंकि यह सोमवार नहीं है।

यदि आप उपसर्ग के साथ RoleVoter कॉन्फ़िगर नहीं करते हैं तो यह जांच करेगा कि क्या उपयोगकर्ता को "DAY_MONDAY" नाम दिया गया प्राधिकरण है, और इसलिए यह परिदृश्य काम नहीं करेगा।

यदि आप केवल भूमिकाओं में रुचि रखते हैं, तो आप उपसर्ग के बिना कर सकते हैं, या आप अभिव्यक्तियों का उपयोग कर सकते हैं (जैसे hasRole('user')) जो RoleVoter का उपयोग नहीं करते हैं।

+1

हैलो ल्यूक, मैं सिर्फ 1.2.2 से 1.3.2 तक स्प्रिंग बूट को अपग्रेड करता हूं और यह मेरे लिए ब्रेक करना शुरू कर देता है। मेरे नियंत्रकों के पास @PreAuthorize है ("हैरोल ('संपादित करें')") और अब यह ROLE_ उपसर्ग की जांच शुरू कर रहा है। ऐसा लगता है कि हैरोल() का स्पष्टीकरण बदल गया है क्योंकि आपने यह जवाब पोस्ट किया है क्योंकि यह रोलवॉटर के माध्यम से जा रहा है। मैंने उपसर्ग को खाली करने के तरीकों को खोजने का प्रयास किया "लेकिन उनमें से कोई भी काम नहीं कर रहा है ... क्या आप स्प्रिंग बूट 1.3.2 में ऐसा करने का एक और तरीका सुझा सकते हैं? – szxnyc

+2

मैंने इसे हाहाधिकारी में बदल दिया और यह काम किया। – szxnyc

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