В настоящее время я делаю небольшой проект с использованием Angular 6, чтобы попрактиковаться в взаимодействии клиент-сервер. Это простой сайт в стиле блога, где пользователи могут просматривать посты других пользователей и создавать свои собственные.До сих пор я занимался аутентификацией JWT и защитой маршрутов, чтобы предотвратить просмотр защищенных ресурсов кем-то, кто не вошел в систему.
Структура проекта в настоящее время такова, что у каждого пользователя есть профиль пользователя, отображаемый компонентом ProfilePage
,В моем маршрутизаторе я перехожу к правильной странице пользователя со структурой /user/:username
, где :username
- это конкретная страница пользователя, для которой сервер будет отправлять обратно соответствующие данные.Проблема, которую я пытаюсь решить, состоит в том, как сделать так, чтобы пользователь, вошедший в свою учетную запись, мог добавлять и удалять сообщения только на своей странице профиля, а не чужие.
Я ознакомился с разрешениями и ролями пользователей, однако, если у обоих пользователей есть роль «ПОЛЬЗОВАТЕЛЬ», как я могу различить, когда пользователь смотрит на свою страницу или нет?
Некоторые идеи, которые у меня были:
Динамически проверять разрешения на странице, когда пользователь переходит на нее, поэтому я отправляю запрос на сервер (с JWTна предъявителя) и отправляет обратно статус роли пользователя / редактора для страницы, а затем, когда пользователь публикует что-либо, сервер снова проверяет, что пользователю разрешено публиковать, прежде чем вносить изменения в серверную часть.
Еще одна идея, которая у меня была, заключалась в создании отдельного компонента MyProfile, который действует, выглядит и выглядит как профиль пользователя, за исключением кнопок редактирования.Проблема, с которой я могу столкнуться при этом, заключается в том, что позже у меня возникнут проблемы, когда я реализую роль ADMIN, которая может удалять сообщения любого пользователя (за исключением этики в образовательных целях этого проекта).
Аналогично первой идее, но когда пользователь входит в систему, запишите его имя пользователя и просто проверьте это разрешение на стороне клиента, а затем на стороне сервера, когда они фактически создают / удаляют сообщение, чтобы убедиться, что ему действительно разрешено это делать.,
Кажется ли какой-либо из этих вариантов реальным способом продвижения вперед?Если я могу сделать это все еще с Гвардией, как так?