Я обычно выключаю autoRedirect
, чтобы я мог делать дополнительные вещи в моем login
методе.Обычно я не выполняю эту большую работу, но вы, вероятно, можете изменить свою ориентацию соответствующим образом после завершения / успешной аутентификации.Это не полный ответ и не следующий полный фрагмент кода для вашего требования, но его может быть достаточно для начала.
/** Logging in and authenticated */
if ( !empty( $this->data ) && $this->Auth->user() ) {
$this->User->id = $this->Auth->user( 'id' );
$this->set_user_type();
$this->User->saveField( 'last_login', date( 'Y-m-d H:i:s' ) );
if( $this->User->has_building( $this->Auth->User('id') ) ) {
$this->redirect( array( 'controller' => 'buildings', 'action' => 'incentives' ) );
}
else {
$this->redirect( $this->Auth->redirect() );
}
}
Это фрагмент одного из моих собственных проектов.В вашем случае вы могли бы искать значение секретного ключа затем.Если этого не существует, перейдите в представление, чтобы получить его и отправить обратно тому же методу.На втором проходе, если пользователь прошел проверку подлинности, а секретный ключ передан и существует, тогда перенаправьте по мере необходимости.Если секретный ключ неверен, отмените аутентификацию пользователя и перенаправьте.
Как я уже сказал, не полный ответ и очень простой взгляд на сложную проблему, но, надеюсь, это поможет вам начать работу.