2013-02-19 2 views
0

Я полностью потерял попытку настроить AuthComponent. Сбой всех логинов.Не может показаться, что AuthComponent CakePHP работает

Вот мой AppController beforeFilter функция:

public function beforeFilter() { 

    $this->Auth->authenticate = array(
     'all' => array(
      'userModel' => 'ClientUser', 
      'fields' => array(
       'username' => 'login', 
       'password' => 'password' 
      ) 
     ) 
    ); 

    $this->Auth->loginAction = array('controller' => 'client_users', 'action' => 'login'); 
    $this->Auth->loginRedirect = array('controller' => 'static', 'action' => 'clientcenter'); 
    $this->Auth->logoutRedirect = array('controller' => 'static', 'action' => 'home'); 

    // I deny stuff later on 
    $this->Auth->allow(); 
} 

И вот login функция в контроллере ClientUsers:

public function login() { 

    // Check login data 
    if ($this->Auth->login()) { 
     return $this->redirect($this->Auth->redirect()); 
    } else { 
     $this->Session->setFlash(__('Username or password is incorrect'), 'default', array(), 'auth'); 
    } 
} 

И это всегда терпит неудачу. И я понятия не имею, почему.

Это мое $request->data содержания: (Я на самом деле использовал «логин» и «имя пользователя», как имя поля, ни работу)

ClientUser 
    login: [email protected] 
    password: thepassword 

паролей клиентов перемешаны в модели, используя AuthComponent (который . импортируется в верхней части сценария я использовал функцию хеширования безопасность раньше, но и не сработал):

public function beforeSave($options) { 

    $this->data['ClientUser']['password'] = AuthComponent::password($this->data['ClientUser']['password1']); 

    return true; 
} 
+0

"этом-> Auth-> позволяют();" это плохая идея. Только белый список определенных действий или, по крайней мере, поместить это только в некоторые контроллеры, никогда в контроллере приложений. Кроме того, ваш beforeSave выглядит плохо (хотя он, скорее всего, не связан). Как включить AuthComponent? – mark

ответ

1

Где вы Auth адаптера? , как описано на http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#authentication-objects

// at least one adapter is necessary (here Form) 
public $components = array(
    'Auth' => array(
     'authenticate' => array(
      'Form' => array(
       'fields' => array('username' => 'email') 
      ) 
     ) 
    ) 
); 
+0

Как-то я думал, что 'Form' был адаптером по умолчанию, это действительно исправить. – skerit

Смежные вопросы