При создании защищенного REST API я хотел бы использовать пользовательский сервис для управления безопасностью методов, например:
@GetMapping("/secure")
@PreAuthorize("hasTask(myUser, myTask)")
public String getSecure(){
return "Secure!";
}
Этот сервис представляет собой
public interface SecurityService {
public boolean hasTask(UserEntity user, SecurityTask task);
}
Но, очевидно, hasTask()
не ограничен и не может быть использован. Результаты, похоже, предлагают использовать @securityServiceImpl.hasTask()
, но это неправильно, потому что я хотел бы использовать интерфейс. Причиной вызова метода на интерфейсе может быть наличие нескольких служб, например, одна в профиле DEV для проверки безопасности, а другая в PROD для использования реальной логики c.
Что я здесь не хватает?