Как в CakePHP создать маршрут «Отказано в доступе»? - PullRequest
1 голос
/ 08 июня 2011

При просмотре руководств по настройке компонентов Auth и ACL я обнаружил, что когда вошедший в систему пользователь получает доступ к области моего сайта, для которой у него нет разрешений, он перенаправляется на /.

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

1 Ответ

1 голос
/ 09 июня 2011

Вы можете установить $ this-> Auth-> authorize = 'controller', а затем указать перенаправление в обратном вызове isAuthorized ().

http://book.cakephp.org/view/1275/authorize

http://api13.cakephp.org/view_source/auth-component/#line-508

Вы также можете проверить $ this-> Auth-> user () на наличие достаточных привилегий и перенаправить при ошибке:

if ($this->Auth->user('level') < 2) {
    $this->redirect('/users/declined');
}

В противном случае Auth-> redirect () извлекает любое установленное свойство перенаправления входа в системук, который по умолчанию /.Смотри http://api13.cakephp.org/view_source/auth-component/#line-745

...