А что вы имеете в виду под "идет вызов заново всей цепочки,а не вызов из dataTest." ? то что по факту вместо обращения к полю объекта идут запросы в базу?
К сожалению на стороне фильтров не вариант. Я и думал сделать через nginx, но подумал что может у вилдфлая есть подобный функционал, что бы избежать установки лишнего ПО
Viktor Koltcov: интерсепторы и аспекты это разные вещи, в свое время читал об этом. но разница столь странна и туманна, что понять ее не представляется возможным. по крайней мере для меня.
Viktor Koltcov: подробнее почитать об аспектах можно в гайдах по AspectJ
Приблизительно будет что то вроде этого
aspect
public class SecurityControlAspect{
@Around("@annotation(com.test.security.Secure)") // указываем точку среза
public Object traceMethod(ProceedingJoinPoint pjp) throws Throwable { //получаем срез метода
if(checkAccess()){
Object o = pjp.proceed(); // "выполняем" метод в случае успешной проверки
return o;
}else{
return error; //возвращаем ошибку если доступа нет
}
}
}
Viktor Koltcov: я же говорю. гляньте в сторону аспектов. если объяснить использование аспекта в вашем случае - вы создаете класс SecurityControlAspect в нем описываете логику проверки на доступ и ставите ему что бы он срабатывал при использовании методов, аннотированных аннотацией @Secured. Вешаете эту аннотацию на нужные вам методы и все. все работает. все защищается. Внутри аспекта вы получаете в свое распоряжение срез метода. т.е. до его выполнения, выполняете нужные проверки и в случае ошибки возвращаете ошибку.
ну это все если делать предельно красиво и хорошо, не прибегая к использованию сторонних библиотек, не понимаю только к чему вам нужно поэлементное ограничение, ведь если юзер делает запрос example.com/document/15 и не имеет доступа к документу 15 - вернуть ошибку, вот и вся недолга
@Power: понял вас, но беда в том что ничего у меня как раз и не получилось, видимо я плохо описал суть вопроса. но проблема была решена использованием наследования сущностей TABLE_PER_CLASS.
@Mikhail_dev в том и была проблема, что она depricated, из за этого приступил к поиску альтернатив. а способ общения приложения через js был мне не понятен.