Проект CakeCake php 2.x, перенаправляющий на неправильный URL после реализации ACL

Мой проект Cake Php перенаправляет на неправильный URL после того, как я выполнил полную реализацию ACL, следуя этому руководству -> http://book.cakephp.org/2.0/en/tutorials-and-examples/simple-acl-controlled-application/simple-acl-controlled-application.html.

Проблема —

Правильный редирект -> localhost / appname /

Перенаправление после того, как я реализовал ACL -> localhost / appname / appname /

Это перенаправление, которое происходит после входа в систему. Публичные страницы (логин) работают нормально.

Ниже приведен код контроллера приложения

public $components = array( 'Acl',
'Auth' => array(
'authorize' => array(
'Actions' => array('actionPath' => 'controllers')
)
),
'Session'
);
public $helpers = array('Html', 'Form', 'Session');
// only allow the login controllers only
public function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('login');
}

Скриншот таблицы Acos
Скриншот таблицы Acos
Скриншот таблицы Aros
Скриншот таблицы Aros
Скриншот таблицы Aros_Acos
Скриншот таблицы Aros_Acos
таблица групп

введите описание изображения здесь

routes.php

Router::connect('/dashboard', array('controller' => 'dashboards', 'action' => 'index'));
Router::connect('/login', array('controller' => 'users', 'action' => 'login'));
Router::connect('/logout', array('controller' => 'users', 'action' => 'logout'));
Router::connect('/', array('controller' => 'dashboards', 'action' => 'index'));
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
CakePlugin::routes();
require CAKE . 'Config' . DS . 'routes.php';

Правый URL открывался, когда я использовал только «Auth» вместо следующего.

'Auth' => array(
'authorize' => array(
'Actions' => array('actionPath' => 'controllers')
)
),

НО, тогда ACL не работает.

1

Решение

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

public function beforeFilter() {
//Configure AuthComponent
$this->Auth->loginAction = array(
'controller' => 'users',
'action' => 'login'
);
$this->Auth->logoutRedirect = array(
'controller' => 'foo',
'action' => 'bar'
);
$this->Auth->loginRedirect = array(
'controller' => 'foo',
'action' => 'bar'
);
}

В вашем случае вы, похоже, хотите, чтобы вошедший в систему пользователь вернулся на домашнюю страницу, поэтому в этом примере ваша домашняя страница будет определена в app / config / rout.php как действие панели контроллера foo.

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

public function login() {
if ($this->request->is('post')) {
if ($this->Auth->login()) {
// Redirect the user to home
return $this->redirect($this->Auth->redirect(array('controller'=>'foo', 'action'=>'bar')));
}
}
}

Кажется, вам не хватает компонента ACL в вашем массиве компонентов AppController. Попробуйте обновить его до:

public $components = array(
'Acl',
'Auth' => array(
'authorize' => array(
'Actions' => array('actionPath' => 'controllers')
)
),
'Session'
);
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector