Как безопасно реализовать роли в реакт-приложении?
Доброго дня.
В приложении могут быть админы и пользователи. Для них отличается функционал и некоторые области разметки. Соответственно, встал вопрос, как безопасно и элегантно разграничивать доступ? Вопрос не о роутинге, а о хранении роли (пока хранится авторизационный токен).
Если я сохраню роль локально, и пользователь ее изменит, ему, как минимум, откроется админская разметка (например, появятся пункты в меню, доступные только администраторам). Сервер, конечно, вернет 403 при попытке постучаться в закрытый раздел, но я не хочу открывать рядовому юзеру то, что видят администраторы.
Если же локально будет храниться только токен, а роль будет в state, то получается, что мне придется при каждом старте приложения стучаться на сервер и запрашивать полномочия, и на основе полученных данных рендерить нужный набор компонентов. Не слишком ли избыточно?
Как обычно делают в таких ситуациях, каков наиболее элегантный путь?
Заранее спасибо.
А если пользователь изменит сохраненные права? Я, конечно, проверю, но поскольку рендеринг клиентский, юзер увидит админское меню перед запросом за данными. Не то чтобы это была дыра, но это некрасиво.
Алексей Николаев, вы можете отдавать админскую часть чанком по требованию и только пользователям с админскими правами. Но пользователь вряд ли будет самостоятельно менять права в приложении.