Как вернуться на страницу реферера в CakePHP после авторизации
У меня проблема с возвратом на страницу реферера:
first url: http://site.com/venue/apartments/1564/venue-name
referer url: null
На этой странице я могу редактировать вещи внутри, поэтому у меня естьlogin
чтобы перейти на страницу входа в систему, после успешного входа в систему я хотел бы вернуться кfirst url
.
second url: http://site.com/users/login
referer url: http://site.com/venue/apartments/1564/venue-name
когда я пытаюсь войти в систему, из-за правил действия CakePHP, я должен обновить страницу входа, чтобы проверить учетные данные,problem
начинается здесь:
third url: http://site.com/users/login
referer url: http://site.com/users/login
обновив страницу и проверив учетные данные вlogin
действиеusers
Контроллер, который я получаю, ссылается на ту же страницу, где я был раньше, и теперь я не могу вернуться кfirst url
.
Я попытался какое-то решение, установив переменную сеанса в AppController, который проверяет, если я не вlogin
Действие страницы и делать это:
AppController.php
public function beforeFilter () {
$this->setRedirect();
}
public function setRedirect () {
if ($this->request->params['controller'] != 'users' && $this->request->params['action'] != 'login') {
$this->Session->write('redir', array('controller'=>$this->request->params['controller'], 'action'=>$this->request->params['action'], implode($this->request->params['pass'], '/')));
}
}
Тестируя сессию var сdebug($this->Session->write('redir'));
Казалось бы, все работает идеально, пока я не иду кlogin
действие:
UsersController.php
public function login () {
if ($this->request->is ('post')){
if ($this->Auth->login()) {
$redir = $this->Session->read('redir');
if (!empty($redir)) {
$this->redirect ($redir);
} else {
$this->redirect ($this->Auth->redirect());
}
}
}
}
Делая это сломать приложение, и если яdebug($redir);
Вар я получаю:
array(
'controller' => 'js',
'action' => 'jquery',
(int) 0 => 'plugin/jquery.validata.1.7.min' // just a jquery plugin loaded in default.ctp
)
вместо
array(
'controller' => 'venue',
'action' => 'apartments',
(int) 0 => '1564/venue-name'
)
Если яdebug($redir);
в любом другом представлении всего сайта все работает хорошо, и я получаю правильные данные.
Я думал в какой-то процедуре защиты сессии для$this->Auth->login()
действие, но это полная чушь для меня.
Как я могу просто перенаправить пользователя, вошедшего на последнюю страницу, которая не являетсяlogin
Просмотр страницы?