Я пытаюсь реализовать комманду аутентификации/авторизации на моем сайте cakePHP с использованием компонентов Auth и Acl, но что-то странное происходит с моей реализацией. У меня есть правильные таблицы acos, aros и aros_acos, и они, похоже, работают на некотором уровне.cakephp acl aros_acos paradox
Я сопоставили свои действия так:
$ this-> Auth-> mapActions (массив ('прочитать' => Array ('вид'), 'Обновление' => Array ('редактировать')));
Моя экоса таблица выглядит следующим образом:
-
- сайт
- 1.1 Страница
- 1.2 Пользователи
- 1.3 Группа
- 1,4 Администратор
и AROS стол:
-
- пользователи
- 1.1 Редакторы
- 1.1.1 администраторы
- 1.1.1.1 ADMIN_NAME
- 1.2 regular_user
Пользователи, редакторы и администраторы - это группы. Admin_name - пользователь admin, член группы admins, а regular_user является членом группы пользователей.
Теперь, в таблице aros_acos, если я даю группе пользователей права CRUD для «страницы» следующим образом: 0 1 1 0 (что дает им право читать и обновлять), тогда все работает нормально (при меньше всего для действий «просмотра» и «редактирования»). Но если я ставлю 0 1 0 0 (только право на чтение), то я перенаправляюсь к '/', и одна вещь, которую я заметил, это то, что она не вызывает app_controller или, по крайней мере, функцию beforeFilter() в app_controller.
Кроме того, я написал beforeFilter(), чтобы, когда пользователь не имеет доступа к crud, чтобы дать ему флэш-сообщение $ this->, сообщив ему, что он «не авторизован» (I должен был это сделать, поскольку $ this-> Auth-> authError, похоже, не работает). Поэтому, имея в виду это, я теперь переписываю таблицу aros_acos для группы пользователей следующим образом: 0 0 1 0 (разрешение только для обновления), и на этот раз я получаю сообщение со вспышкой, когда я обращаюсь к действию «view» (что правильно так как у меня нет доступа к нему), но я также получаю сообщение со вспышкой, когда пытаюсь получить доступ к действию «изменить».
Мне что-то не хватает, и я не знаю, что. Я написал этот вопрос, надеясь, что до его завершения я сам придумаю решение ... но не повезло. Я все еще не знаю, что происходит, я думаю, это какая-то контрольная вещь ... У вас есть идеи?
Благодарим за ответ. Эти последние дни я пытался отследить свою проблему, но мне не удалось ее найти. Так что, в конце концов, я просто исправил это с помощью линии маршрутизации. Итак, теперь я направляю '/' на страницу входа. Кажется, это работает. Я не знаю, нормально ли это решение, на самом деле я уверен, что это не так, но в любом случае у меня есть крайний срок, и это решение работает на всех уровнях (что я тестировал). Теперь, если пользователь пытается получить доступ к несанкционированной раздаче, он отправляется на страницу входа и на этой странице он получает уведомление $ this-> Auth-> authError. Во всяком случае, спасибо за поддержку. – Progenitura