Как скрыть другую пользовательскую информацию в Spring Boot - PullRequest
0 голосов
/ 23 октября 2018


У меня приложение для весенней загрузки.
Пользователи могут войти в приложение и редактировать свои собственные профили.
Проблема в том, что;пользователи также могут редактировать профиль других пользователей.
Например, ссылка для редактирования собственного профиля пользователя:

http://localhost/users/edit/1001

Но он также может получать доступ к профилям других пользователей, например;

http://localhost/users/edit/2001
http://localhost/users/edit/10
http://localhost/users/edit/5000

есть идеи, как лучше всего предотвратить эту проблему?

Ответы [ 3 ]

0 голосов
/ 23 октября 2018

Идентификатор (1001) в http://localhost/users/edit/1001 url должен быть таким же, как и вошедший в систему идентификатор пользователя (основной идентификатор пользователя), а затем разрешать редактировать только в противном случае 403 доступ запрещен страница, которую вы можете перенаправить.

Вы также можете использовать аннотацию PreAuthorize, как показано ниже.

@PreAuthorize("id == authentication.principal.id")

Посмотрите на это и это

0 голосов
/ 23 октября 2018

Я бы не выставлял конечную точку /edit для пользователей ... Я бы создал конечную точку /profile/edit и всегда направлял бы к текущему зарегистрированному пользователю и оставлял редактирование пользователя для панели администратора, внутреннего инструмента.

0 голосов
/ 23 октября 2018

Что вы можете сделать, так это то, что вы можете извлечь user_id из базы данных, используя принципал, и сравнить его с переданным user_id и перенаправить пользователя на страницу unauthorized, если оба идентификатора не совпадают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...