2016-03-18 4 views
2

Сценарий: сайт для обмена фотографиями, который позволяет пользователям загружать фотографии. Пользователи могут удалять или редактировать свои фотографии. Способы удаления и редактирования - это методы Post. Эти методы используют идентификатор фотографии, чтобы найти фотографию и изменить ее. Фотографии получаются с помощью текущей аутентифицированной информации пользователя, например: SecurityContextHolder.getContext().getAuthentication();Как запретить пользователям изменять данные других пользователей?

Так что, если пользователь A хочет удалить идентификатор фотографии пользователя B, а A пишет почтовый метод с JavaScript и удаляет фотографию пользователя B.

Возможно ли это? Или эта практика проблематична?

+0

Вам нужен какой-то «список» для «Контроль доступа». http://docs.spring.io/spring-security/site/docs/4.0.4.RELEASE/reference/htmlsingle/#domain-acls –

ответ

1

Вам нужно будет написать сервисный уровень, который позволяет удалять на основе разрешений.

Это не позволит пользователям удалять активы, которых они не должны.

Каждый запрос будет проверять это, чтобы гарантировать, что пользователь, который не имеет прав на удаление канта.

Все зависит от того, как ваш домен управляет разрешением, если у активов есть определенные владельцы, тогда вы можете использовать SecurityContextHolder, иначе вам нужно реализовать свою собственную логику.

+0

То, как я думал, имеет столбец user_id в таблице фотографий и проверяет если фотография принадлежит текущему аутентифицированному пользователю. Но я думаю, что это тратит много ресурсов, что приводит к большому количеству операций с базой данных. – Tong

+0

@Tong На самом деле я считаю, что это довольно справедливое решение. Это гарантирует, что владелец может внести изменения. – dkanejs

+0

@Tong Одна база данных, прочитанная, когда у вас уже есть фотография в области, является простым сравнением. Не пустая трата ресурсов. – dkanejs

Смежные вопросы