Я получил похожую модель домена
- 1) Пользователь. Каждый пользователь получил много городов.
@OneToMany(targetEntity=adv.domain.City.class...)
- 2) Город. В каждом городе есть много районов
@OneToMany(targetEntity=adv.domain.Distinct.class)
- 3) Distintc
Моя цель состоит в том, чтобы удалить отчетливое, когда пользователь нажимает кнопку удаления в браузере. После этого контроллер получает идентификатор отличного и передает его в бизнес-слой. Где метод DistinctService.deleteDistinct (Long однозначный) должен делегировать деление на
Слой DAO.
Так что мой вопрос в том, где установить ограничения безопасности и как лучше всего это сделать. Я хочу быть уверен, что я удаляю отличную от реального пользователя, то есть настоящего владельца города, а город - настоящего владельца отличного.
Поэтому никто, кроме владельца, не может удалить ditinct, используя простой URL-адрес, такой как localhost / deleteDistinct / 5.
Я могу получить пользователя из httpSession в моем контроллере и передать его на уровень бизнес.
После этого я могу получить все города этого пользователя и проиллюстрировать их, чтобы убедиться, что в citie.id == однозначный_город_ид, а затем удалить отдельный.
Но, на мой взгляд, это довольно нелепо.
Также я могу написать SQL-запрос, как это ...
delete from
t_distinct
where
t_distinct.city_id in (
select
t_city.id
from
t_city
left join t_user on t_user.id = t_city.owner_id
where
t_user.id = ?
)
and t_distinct.id = ?
Итак, как лучше добавлять такие ограничения?
Кстати, я использую Hibernate, Spring, Spring MVC ..
Спасибо