Аутентификация CakePHP только для префикса администратора

У меня есть префикс администратора, где у нас есть раздел на основе CMS, где владельцы сайтов смогут поддерживать содержимое приложения.

Есть ли способ автоматически ограничить только эти разделы через компонент Auth. В то время как другие части не требуют аутентификации.

// other wise i will have to add a lot of actions like below
$this->Auth->allow('home', 'about', 'contacts);

person Harsha M V    schedule 02.02.2014    source источник


Ответы (2)


просто $this->Auth->allow(); когда prefix != 'admin'

person Ceeram    schedule 02.02.2014
comment
Чувак, мое требование состоит в том, чтобы позволить пользователям с ролью администратора иметь доступ ко всем действиям с префиксом администратора в CakePHP 3.x......пожалуйста, помогите мне здесь? - person meDeepakJain; 02.11.2016

Вы можете сделать это довольно просто, используя авторизацию на основе контроллера: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#using-controllerauthorize

Идея состоит в том, что у вас будет метод isAuthorized() в вашем контроллере (и любом контроллере, для которого вы хотите использовать определенные правила), который возвращает true или false в зависимости от авторизации пользователя.

Таким образом, вы можете отключить все пути администратора (кроме тех, кто аутентифицирован), поместив что-то вроде этого в свой AppController:

public function isAuthorized($user) {
    // * Admin section control
    if (empty($this->params['admin'])) {
        // ** DEFAULT: All users can access public functions
        return true;
    } else if(AuthComponent::user('role') == 'admin'){
        // ** Allow admin users access to everything.
        return true;
    }
    // * DEFAULT: Deny all
    return false;
}

Изменить: К сожалению, это было бы полезно, только если пользователь уже прошел аутентификацию (вошел в систему), извините.

person Todd    schedule 02.02.2014
comment
поэтому добавьте это в AppController, и мне нужно будет вызвать это в beforeFilter() во всех контроллерах, чтобы проверить авторизацию? - person Harsha M V; 02.02.2014
comment
авторизация по-прежнему требует, чтобы пользователи вошли в систему - person Ceeram; 02.02.2014