В приложении JPA У меня есть сценарий, в котором приложение является дляJava - эффективная авторизация на уровне экземпляра на базе базы данных?
список всех счетов данный пользователь имеет право отказаться от
У меня есть сущность счета и многие-ко многие таблицы, в которых перечислены полномочия, которые каждый пользователь имеет для каждой учетной записи, - для реализации вышеприведенного сценария, приложение в настоящее время просто соединяет две таблицы - это довольно быстро.
Теперь я планировал добавить явный слой авторизации (на основе Apache Shiro/пружинную безопасности/другой), чтобы изолировать авторизации, связанные с логикой от остальной части коды, но ...
Есть некоторые 10k Учетные записи в базе данных, а «средний» пользователь получает «депозит» на всех из них, «просмотр» на одну половину и «нахождение» всего лишь на несколько.
Является ли какая-либо система безопасности эффективной для реализации этого сценария?
Т.е.: любой из них может «украсить» запрос JPA типа «выберите a из учетной записи a» (или эквивалентный SQL) и, таким образом, получить список учетных записей без загрузки всех пользовательских грантов из базы данных и все средства, без получения всех счетов?)
... и вы не имеете объект пользователя, который связан с полномочиями и может просто «SELECT * FROM Account WHERE Account.userAuths.user = пользователь "? –
Yep - вот что делает приложение прямо сейчас. Мне интересно, разрешает ли какая-либо инфраструктура auth удалить связанное с авторизацией соединение из кода. – giorgiga
Может ли запрос NamedNativeQuery возвращать объекты учетной записи, такие как 'select acc. * Из учетной записи acc, user_auth uauth, где uauth.user_id =: login_userid' help? –