Я отключил autoRedirect
, поэтому я могу добавить немного джаза в метод входа в систему моего контроллера пользователей и использовать сеанс для отправки их туда, откуда они пришли.
class UsersController extends AppController
{
var $name = 'Users';
var $components = array('Session');
function beforeFilter()
{
parent::beforeFilter();
$this->Auth->allow(array('login','logout','admin_logout','admin_login'));
$this->Session->write('back_to', $this->referer());
}
/**
* Log in
*/
function admin_login ()
{
$this->set('title_for_layout', 'Log in – Admin —');
if(!(empty($this->data)) && $this->Auth->user())
{
$back_to = $this->Session->read('back_to');
if($back_to)
{
$this->redirect($back_to, null, true);
}
else
{
$this->redirect($this->Auth->redirect(), null, true);
}
}
if($this->Auth->user())
{
$this->redirect($this->Auth->redirect(), null, true);
}
}
Так что идеяявляется то, что если у пользователя есть сеанс (99.% времени), то при отправке формы он отправит пользователя на предыдущую страницу, если нет, то отправит по умолчанию loginRedirect.
ПРИМЕЧАНИЕ: установив для autoRedirect
значение false, CakePHP больше не использует сеанс Auth.Redirect
!Таким образом, сохраненное там значение больше не используется приложением и является преднамеренным!
Проблема, с которой я сталкиваюсь, заключается в том, что мое приложение ВСЕГДА отправляет пользователя на панель инструментов из-за функции ниже «ЭтотКомментарий в коде выше.Если я удаляю эту функцию, то пользователь просто отправляется НАЗАД в форму входа в систему все время, НО они будут зарегистрированы!
Может кто-нибудь помочь?
Спасибо
ОБНОВЛЕНИЕ: вот мой код контроллера приложения:
class AppController extends Controller
{
var $components = array('Auth','Session');
public function beforeFilter()
{
parent::beforeFilter();
$this->Auth->authorize = 'controller';
$this->Auth->autoRedirect = false;
$this->Auth->loginAction = array('controller'=>'users','action'=>'login','admin'=>true
);
$this->Auth->loginRedirect = array('admin'=>true,'controller' => 'dashboard', 'action' => 'index');
$this->Auth->logoutRedirect = array('admin'=>false,'controller' => 'pages', 'action' => 'display','home');
}
function isAuthorized()
{
return true;
}
}