मेरे पास एक उपयोगकर्ता वर्ग है और मैं एक्सेस को अधिकृत करना चाहता हूं कि केवल एक उपयोगकर्ता को यह देखने के लिए कि वह किस हकदार है।स्प्रिंग डेटा आरईएसटी प्रक्षेपण के लिए सुरक्षा को आराम दें
-public interface UserRepository extends JPARepository<User,Integer> {
@PreAuthorize("hasRole('LOGGED_IN') and principal.user.id == #id")
User findOne(@Param("id") Integer id);
}
इस तरह, एक उपयोगकर्ता जब स्प्रिंग डाटा बाकी का दौरा करने जैसे URL scaffolded -
यह आसानी से जहां जेपीए भंडार में मैं नीचे किया साथ स्प्रिंग डाटा बाकी संयोजन के रूप में वसंत सुरक्षा का उपयोग कर प्राप्त था
/users/{id}
/users/{id}/userPosts
केवल {id} के साथ लॉग इन किए गए लोग इन्हें देख सकते हैं और बाकी सभी को 401 मिलते हैं जैसे मैं चाहता था।
मेरे समस्या यह है कि मैं अनुमान से एक है जो प्रत्येक उपयोगकर्ता के एक सार्वजनिक दृश्य है और मैं वसंत डाटा बाकी अनुमानों का उपयोग कर इसे crating हूँ के रूप में जो नीचे मैं हर {आईडी} के लिए सुलभ होने के लिए
@Projection(name = "details", types = User.class)
public interface UserDetailsProjection {
..
}
चाहते
तो, /users/{id1}?projection=details
रूप में अच्छी तरह /users/{id2}?projection=details
के रूप में 200 ठीक और शो डेटा भले ही उपयोगकर्ता द्वारा {id1}
मैं @PreAuthorize ("permitAll") के साथ प्रक्षेपण चिह्नित करके इस को लागू करने के लिए शुरू किया में लॉग ऑन है, लेकिन वह काम नहीं करेगा देना चाहिए चूंकि रिपोजिटरी कठिन है सुरक्षा जांच। क्या हमारे पास यह कार्यक्षमता हो सकती है जहां प्रक्षेपण के लिए हम सुरक्षा को आराम दे सकते हैं?
मैं नवीनतम स्प्रिंग डाटा आराम और स्प्रिंग सुरक्षा वितरण
मुझे इस दृष्टिकोण के साथ एक समस्या है कि स्प्रिंग डेटा रेस्ट के साथ सभी नियंत्रकों और सेवाओं को ढांचे द्वारा उत्पन्न किया जाता है और इसलिए मैं केवल रिपोजिटरी को संभालता हूं जहां मैं सुरक्षा कॉन्फ़िगर कर सकता हूं। मेरे पास कस्टम यूआरएल भी है और यह समाधान पूरी तरह से फिट होगा। जब तक कि मैं पूरी तरह से गलत नहीं हूं, क्या आप कृपया मुझे बता सकते हैं कि स्प्रिंग डेटा रेस्ट जेनरेट किए गए यूआरएल जैसे उपयोगकर्ता/{id} और/users/{id}/userPosts जैसे मैंने रिपोजिटरी में इन एनोटेशन को जोड़ने के बिना पोस्ट में उल्लेख किया है? – fortm
मुझे भी संदेह है कि अगर मैं वसंत डेटा बाकी अनुमानों के लिए @RequestMapping जोड़ सकता हूं? – fortm