новый пользователь в стекеНовое в PHP и веб-приложениях в целом.
Я пытаюсь создать простой веб-приложение типа панели администратора на основе шаблона Bootstrap, MySQL и PHP. В настоящее время у меня возникают трудности с поиском информации о том, как реализовать схему доступа на основе ролей. Большинство моих результатов поиска содержат много информации о том, как RBAC может быть спроектирован, но не так много о реализации интерфейсного приложения.
В частности, я не знаю оптимального местоположения в моем приложении для проверки доступа пользователяк различным функциям.
В настоящее время у меня есть рабочая система входа пользователя. Я добавил phprbac (http://phprbac.net/), настроил таблицы и добавил некоторые роли и разрешения для моих пользователей.
Мои мысли о том, где реализовать:
- Создание ссылок для навигациидинамически с вызовом
rbac->check()
для каждой ссылки - Для всего нескольких ссылок, сделанных таким образом, кажется, быстро увеличивается время загрузки страницы, поэтому я склоняюсь к
- Позвоните
rbac->enforce()
после проверки $_SESSION
данных для входа в верхней части страниц, которые должны быть авторизованы - Кажется, что это останавливает загрузку страницы и выдает ошибку 403 Forbidden, которая велика
- Безнекоторые средства, препятствующие пользователям переходить по ссылке на эти страницы, я думаю, это будет раздражать моих пользователей, так как они будут ссылками методом проб и ошибок, чтобы узнать, что им разрешено делать
- Какой-нибудь другой лучший способ?
В качестве примера я буду отслеживать недостатки строительного проекта с использованием таблицы. Большинство ролей пользователей смогут открывать недостатки и просматривать таблицу. Роли супервизора смогут закрыть недостатки.
Если я блокирую доступ только к целым страницам (или php включенным частям), я чувствую, что это может стать грязным. Я бы предпочел иметь возможность показывать всю таблицу Deficiencies на дефиците.php и иметь ссылки в разделе «Действия» таблицы для «Закрыть», «Удалить» и т. Д., Чтобы вместо этого запускать сценарии на этой странице (дефицит. Php? Close = 231)
Заранее благодарим вас за любые предложения или указания!