2013-07-31 2 views
0

Я пытаюсь изменить «userModel» от пользователя «по умолчанию» пользователя до «usuario». Я сделал это раньше в CakePHP 1.3, но я не могу заставить его работать с использованием последней версии.Невозможно изменить 'userModel' с помощью AuthComponent в CakePHP

Вот мой код (AppController.php):

App::uses('Controller', 'Controller'); 

class AppController extends Controller { 
    public $components = array(
     'Auth' => array(
      'loginError' => "Nombre de usuario o contraseña incorrectos.", 
      'authError' => "Debes ingresar con tu cuenta de usuario.", 
      'loginRedirect' => array('controller' => 'administrador', 'action' => 'productos'), 
      'logoutRedirect' => array('controller' => 'usuarios', 'action' => 'login') 
     ), 
     'Session', 
     'Email' 
    ); 

    public function beforeFilter() { 
     $this->Auth->authenticate = array(
      'Basic' => array('userModel' => 'Usuario'), 
      'Form' => array('userModel' => 'Usuario') 
     ); 
    } 
} 

Спасибо заранее.

EDIT: компонент перенаправляет меня на «/ users/login» вместо «/ usuarios/login», а форма входа в «/ usuarios/login» не работает. Это похоже на то, что я никогда не менял userModel.

+0

Что именно не работает? Вы получаете исключение? – Joel

+0

Компонент перенаправляет меня на «/ users/login» вместо «/ usuarios/login», а форма входа в «/ usuarios/login» не работает. Это похоже на то, что я никогда не менял userModel. –

ответ

0

Попробуйте сделать это при инициализации Auth компонента

В вас AppController:

public $components = array(
'Auth' => array(
     'authenticate' => array(
      'Form' => array(
       'userModel' => 'Usuario', 
       'fields' => array(
        'username' => 'username', 
        'password' => 'password' 
       ) 
      ) 
     ) 
    ) 
); 
+1

Я просто пробовал, но он не работает. Я также попробовал версию beforeFilter() того, что вы предложили. Торт меня перенаправляет на «/ users/login». –

1

Установка пользовательских UserModel не имеет ничего общего с Auth::loginAction, который указывает на /users/login по умолчанию. Вы можете переопределить его в обратном вызове Controller::beforeFilter() или Controller::$components. Надеюсь, помощь.

0

Изменить вы $components массив следующим образом:

public $components = array(
    'Auth' => array(
     'loginError' => "Nombre de usuario o contraseña incorrectos.", 
     'authError' => "Debes ingresar con tu cuenta de usuario.", 
     'loginRedirect' => array('controller' => 'administrador', 'action' => 'productos'), 
     'logoutRedirect' => array('controller' => 'usuarios', 'action' => 'login'), 
     'loginAction' => array('controller' => 'usuario','action' => 'login','plugin' => null), 
     'authenticate' => array('Form' => array('userModel' => 'Usuario') 

     ), 
    ), 
    'Session', 
    'Email' 
); 
0

Попробуйте этот код

App::uses('Controller', 'Controller'); 

class AppController extends Controller { 
    public $components = array(
     'Auth' => array(
      'loginError' => "Nombre de usuario o contraseña incorrectos.", 
      'authError' => "Debes ingresar con tu cuenta de usuario.", 
      'loginAction' => array('controller' => 'aucusers','action' => 'login'), 
      'loginRedirect' => array('controller' => 'administrador', 'action' => 'productos'), 
      'logoutRedirect' => array('controller' => 'usuarios', 'action' => 'login') 
     ), 
     'Session', 
     'Email' 
     ); 
    } 

я ХВ добавил это на следующие линии

'loginAction' => array('controller' => 'aucusers','action' => 'login'), 
Смежные вопросы