में कस्टम अभिव्यक्तियों का उपयोग कैसे करें @Preauthorize ब्लॉक में अधिक अभिव्यक्तिपूर्ण वक्तव्य बनाने का कोई तरीका है? यहां कुछ ऐसा उदाहरण दिया गया है जो मुझे अपने आप को दोहराने लगता है, क्योंकि @Preauthorize बॉक्स से बहुत स्मार्ट नहीं है।स्प्रिंग सिक्योरिटी @ प्रीअधिकृत/@ पोस्टअधिकृत एनोटेशन
@RequestMapping(value = "{id}", method = RequestMethod.DELETE)
public void deleteGame(@PathVariable int id, @ModelAttribute User authenticatingUser) {
Game currentGame = gameService.findById(id);
if(authenticatingUser.isAdmin() || currentGame.getOwner().equals(authenticatingUser)) {
gameService.delete(gameService.findById(id));
} else {
throw new SecurityException("Only an admin, or an owner can delete a game.");
}
}
जो मैं पसंद करूंगा वह कुछ ऐसा है। समस्या का
@RequestMapping(value = "{id}", method = RequestMethod.DELETE)
@Preauthorize(isAdmin(authenicatingUser) OR isOwner(authenicatingUser, id)
public void deleteGame(@PathVariable int id, @ModelAttribute User authenticatingUser, @ModelAttribute currentGame) { //I'm not sure how to add this either :(
gameService.delete(gameService.findById(id));
}
भाग है कि मैं इस तरह के डेटाबेस से क्वेरी खेल की एक प्रति प्राप्त करने के लिए, और फिर मालिक की तुलना के रूप में अनुमतियाँ, सत्यापित करने के लिए इस सामग्री में से कुछ लाने के लिए डेटाबेस के लिए एक प्रश्न बनाने की जरूरत है अनुरोध करने वाले व्यक्ति को खेल का। मुझे सच में यकीन नहीं है कि यह सब @Preauthorize एनोटेशन प्रोसेसर के संदर्भ में कैसे काम करता है, या मैं @Preauthorize ("") मान विशेषता में उपलब्ध वस्तुओं के संग्रह में चीजें कैसे जोड़ता हूं।
यह समाधान वसंत बूट के साथ मुझे मदद की 1.3.3.RELEASE – ali