В ответ на сообщение @JR Utely ответ правильного ответа, который обеспечивает уровень безопасности Spring Security, еще один вариант - использовать обработчики событий Spring DATA Rest, которые позволяют добавлять больше операций, подобных приведенному ниже примеру.
Просто определить и аннотированный Handler с аннотациями безопасности PrePost Spring в аннотированном
@Component
@RepositoryEventHandler(Item.class)
public class ItemEventHandler {
private Logger logger = LoggerFactory.getLogger(ItemEventHandler.class);
@HandleBeforeCreate
@Preauthorize("hasRole('ROLE_ADMIN') or hasAuthority('ACTION_CREATE_ITEM')")
public void handleItemBeforeCreate(Item item) {
//POST operation available for ADMINs and Users with ACTION_CREATE_ITEM privilege
logger.info("Creating item: " + item.toString());
//more stuff if neccessary
}
@HandleBeforeSave
@Preauthorize("hasRole('ROLE_ADMIN') or hasAuthority('ACTION_UPDATE_ITEM')")
public void handleItemBeforeSave(Item item) {
//PUT operation available for ADMINs and Users with ACTION_UPDATE_ITEM privilege
logger.info("Updating item: " + item.toString());
//more stuff if neccessary
}
@HandleBeforeDelete
@Preauthorize("hasRole('ROLE_ADMIN') or hasAuthority('ACTION_DELETE_ITEM')")
public void handleItemBeforeDelete(Item item) {
//DELETE operation available for ADMINs and Users with ACTION_DELETE_ITEM privilege
logger.info("Deleting item: " + item.toString());
//more stuff if neccessary
}
}
Это полный список обработчиков событий Spring DATA Rest:
- BeforeCreateEvent
- AfterCreateEvent
- BeforeSaveEvent
- AfterSaveEvent
- BeforeSaveEvent
- BeforeLinkSaveEvent
- AfterLinkSaveEvent
- BeforeDeleteEvent
- AfterDeleteEvent
Более подробная информация содержится в Spring DATA Rest Reference for event handling
Спасибо. Я знал об этой работе команды Spring, просто не думал об этом, открывая этот вопрос. Спасибо, что ответили и хватали мое внимание. – Stackee007