@nolouds

Как ограничить доступ пользователю к чужим постам на сайте?

Я делаю приложение где любой пользователь может разместить на странице пост с полями название, айди, текст. Хочу сделать так, чтобы пользователи видели только свои посты. Чужие они не только не видят, но и не могут получить доступ к его полям, к примеру , если на сайте есть поиск по айди, то они не могут вписать айди поста другого пользователя и получить его. Как мне реализовать эту функцию? Не совсем понимаю что я должен писать в поисковике. Пробовал что-то типа "how to link two models in spring framework" (user, post) – выдает другое и еще парочку вариантов перепробовал тоже не то. А если искать впринципе создание постов, то наверно там общие для всех пользователей выдаст.
  • Вопрос задан
  • 74 просмотра
Решения вопроса 2
@Akela_wolf
Extreme Programmer
Самый простой путь: в том месте где вы загружаете сущность поста из БД добавить проверку, что текущий авторизованный пользователь является автором поста.

Авторизацию пользователя можно сделать разными способами, тут гуглить Spring Security - это все целиком про авторизацию и проверку прав доступа.

Например, вот статья о сессиях в спринге, думаю в качестве отправной точки сгодится.
Ответ написан
Комментировать
azerphoenix
@azerphoenix Куратор тега Spring
Java Software Engineer
Добрый день.
Как отметил коллега, в первую очередь вам нужно связать пользователя и его посты.
Рекомендую ознакомиться со связями между сущностями. (OneToOne, OneToMany & ManyToOne, ManyToMany). Затем связать пользователя и его посты при помощи OneToMany & ManyToOne. Таким образом на стороне поста у вас будет ID пользователя, который его добавил.
Далее в контроллерах, вам необходимо получить текущего авторизованного пользователя и проверить принадллежит ли пост этому пользователю или нет. Если нет, то показываем 403. Тут уже зависит от вашей задумки. Можно по-разному проверить и по-разному реализовать
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы