Отправка нескольких форм входа в одно действие - PullRequest
0 голосов
/ 21 июля 2010

У меня есть 2 формы входа в мое (торт) приложение.Один на домашней странице (обслуживается контроллером страниц) и один на моем контроллере пользователя.Тот из моего пользовательского контроллера работает нормально.Но когда я пытаюсь войти с домашней страницы, я получаю пустую страницу и вижу в firebug 404. Странно то, что сессия настроена нормально.

Похоже, что это как-то связано с $ this-> Auth-> autoRedirect = false (который устанавливается в пользовательском контроллере beforeFilter ()).В чем может быть проблема?

Вот так выглядит мое действие при входе:

  function login()
  {
    /* Werkt nog niet vanuit `home login` */
    if ($this->Auth->user())
    {
      if(!empty($this->data))
      {
        /* Update last login */
        $this->User->id = $this->Auth->user('id');
        $this->User->saveField('last_login', date('Y-m-d H:i:s'));
      }
      $this->redirect($this->Auth->redirect());
    }
  }

Ответы [ 2 ]

0 голосов
/ 22 июля 2010

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

<?php
class PagesController extends AppController
{
  var $name = 'Pages';
  var $uses = array();

  var $__allowUnAuthorized = array('*');
  var $__allowAuthorized = array();

  function beforeFilter()
  {
    parent::beforeFilter();

    $this->Auth->allow($this->__allowUnAuthorized);
  }

  function display()
  {
    // Same as default
  }
}

Я также переместил некоторые вещи из моего user_controller в мой app_controller:

<?php
class AppController extends Controller
{
  var $name = 'App';
  var $components = array('Auth', 'Security', 'Session');
  var $helpers = array('Html', 'Form', 'Session');

  function beforeFilter()
  {
    parent::beforeFilter();

    /* Auth */
    $this->Auth->autoRedirect = false;

    $this->Auth->loginAction = array(
      'controller' => 'users',
      'action' => 'login'
    );
    $this->Auth->loginRedirect = array(
      'controller' => 'users',
      'action' => 'index'
    );
    $this->Auth->loginError = __(
      'Ongeldige conbinatie van gebruikersnaam en wachtwoord', true
    );
    $this->Auth->authError =  __(
      'U bent niet bevoegd om deze pagina te bekijken' ,true
    );

    $this->Session->delete('Auth.redirect');
  }
}
?>

А теперь все отлично работает! Может быть, это было связано с тем, что у контроллера страниц нет доступа к $ this-> Session или $ this-> Auth?

0 голосов
/ 22 июля 2010

Когда вы устанавливаете $this->Auth->autoRedirect = false, вам необходимо вручную перенаправить ваш метод login () после попытки входа в систему, f.ex.$this->redirect($this->referer());.Я думаю, у вас есть эта пустая страница из-за отсутствия перенаправления или неправильного перенаправления.Что такое URL этой пустой страницы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...