2012-06-16 2 views
1

Просто интересно для пользователя проверки прав доступа,PHP проверка разрешения пользователя

Если вы держать разрешение на сессии

например. выбрать информацию о пользователе и сохранить идентификатор разрешения в сеансе

или выполнить проверку доступа к базе данных все время, прежде чем делать запрос?

+7

Это тема многих религиозных дебатов. Есть те, кто считает, что хорошо сохранить этот один запрос на пользу «производительности» ... Я говорю в целом, скорее проверяйте и извлекайте из базы данных каждый раз, чтобы предотвратить опасность изменения разрешений между ними. –

+1

Смотрите этот http://phpgacl.sourceforge.net/ - и продолжайте читать об ACL – Burimi

ответ

1

В приложении недоступные данные не должны быть доступны. Как вы устанавливаете эту простую процедуру, зависит от вас и многое зависит от того, как вы структурируете свое приложение.

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

Предполагая, что вы это сделаете: если у вас нет проблем с этим, почему вас беспокоит гораздо более подробный случай?

1

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

Многие люди предполагают, что может быть штраф за исполнение. Но если вы используете MySQL, как и большинство пользователей PHP, результаты будут храниться в кеше запросов в ОЗУ и будут доступны практически безрезультатно.

1

Это зависит от уровня безопасности вашего сайта. Если вы считаете, что безопасность важна для вашего сайта, и вы хотите, чтобы изменения безопасности производились на пользователе, как только они были изменены, вы должны использовать вызовы базы данных. Однако, если ваша система разрешений разработана таким образом, она может стать довольно медленной и неэффективной.

Если безопасность может «подождать» для следующей сессии, я думаю, что лучше сохранить разрешения в сеансе, чтобы избежать потери производительности.

1

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

Когда администратор изменяет разрешение пользователя, это действие может просто аннулировать (удалить) ключ кеша. Затем, в следующий раз, когда вы выберете из кеша, его там не будет, и вы узнаете, что снова попадете в базу данных.

Смежные вопросы