Я создал систему привилегий для своего приложения, которая разрешает / запрещает доступ к определенным страницам на основе пользовательского ввода.
Таблица выглядит примерно так:
page_id | client_id | sys_group_no | name | friendly_name | viewable |
1 | 4 | 1 | home | Home | true |
2 | 4 | 1 | admin| Admin Home | false |
Так если пользователь в client_id 4 относится к группе 1, ему НЕ разрешено просматривать «Admin Home» на самом деле все не так просто, но ради этого вопроса мы можем притворяться.
Проблема заключается в том, что обслуживание этой таблицы быстро устаревает, а когда у вас несколько тысяч строк, постоянно сверяйте таблицу с реальными именами страниц (используя scandir()
а также array_diff()
) будет дорого. Существует ли другая парадигма для проверки такого рода целостности, кроме прямого сравнения? — Например, хэширование $page_array
и сравнивая это будет лучший подход?
Задача ещё не решена.
Других решений пока нет …