В моем приложении angular функция аутентификации работает с опцией single sing on, после успешного входа в систему cookie будет сохранен для моего приложения, со значением cookie вызовите api, чтобы получить данные пользователя вместе с ролями пользователей и т.д. и сохранить в локальном хранилище.
В зависимости от роли на странице панели мониторинга необходимо проверить операцию acl, в настоящее время данные и роли пользователя хранятся в локальном хранилище. поскольку локальное хранилище можно изменить через консоль, есть ли лучший способ сохранить детали?
есть ли лучший способ сохранить результаты данных в обслуживании и доступе в компонентах?
Роль - это очень небольшая информация, которую вы можете перезагрузить при обновлении без особых проблем. Вы можете оставить его в своем магазине, если хотите устранить различия в отображении в зависимости от роли пользователя. Конечно, пользователь всегда может найти способ выполнять бэкэнд-вызовы для функций, которые он не должен делать, и вам нужно предотвратить это в вашем бэкэнде.
@JBNizet: память означает: служебная переменная?
Да, например.
@JBNizet Если я использую службу для хранения ролей локально и обновляю браузер после входа в систему, то я получаю сообщение об ошибке, потому что, вероятно, у меня будет условие, подобное <div *ngIf = "role === ''admin">show something</div>, и тогда переменная роли будет неопределенной, а html то, что я хочу скрыть, больше не будет скрыто. Что мне тогда делать? Перенаправить пользователя на страницу входа?
Я работаю над этим прямо сейчас, и проблема с localstorage в том, что слишком легко повысить роль, что делает все проверки пользовательского интерфейса бессмысленными. По крайней мере, если вы это скроете, им придется использовать более изощренные методы, которые хотя бы замедлят злоумышленника. По-прежнему недостаточно для безопасности, но, вероятно, будет сложнее копаться в упакованных в Интернете источниках, чтобы отменить эти проверки.





1. Вам не нужно хранить роли в локальном хранилище: вы можете просто хранить их в памяти. 2. Что бы вы ни делали, защиты на стороне клиента не существует. Пользователь может делать со своим браузером все, что захочет, независимо от того, используете ли вы локальное хранилище. Вы можете использовать роли на стороне клиента, чтобы скрыть или отключить действия, к которым у пользователя не должно быть доступа, но, в конце концов, ответственность сервер заключается в том, чтобы помешать пользователям делать то, что им запрещено делать.