2012-04-04 5 views
0

Я некоторое время сражаюсь с этим. У меня есть приложение CakePHP 2.0, для которого требуется аутентификация, из-за того, что он должен быть на другом языке, я отошел от автомата «Пользователь» с помощью соглашения «Имя пользователя» и «Пароль» и сделал свою собственную таблицу базы данных:CakePHP 2.0 Auth Войти не работает

utilizatori('id', 'nume', 'parola') 

В моем AppController я следующее определил, который, если я правильно понял, следует переопределить ассоциации CakePHP по умолчанию и сделать его использовать мою новую структуру:

class AppController extends Controller { 
    var $components = array('Session', 
    'Auth' => array('Form' => array(
     'userModel' => 'Utilizator', 
     'fields' => array('username' => 'nume', 'password' => 'parola'), 
     'loginAction' => array('controller' => 'utilizatori', 'action' => 'login'), 
     'loginRedirect' => array('controller' => 'categorii', 'action' => 'admin_index')))); 

    function beforeFilter() { } 
} 

В моем UtilizatoriController у меня есть следующий логин марихуана nction:

function login() 
{ 
    $this->layout = 'admin'; 
    debug($this->data); 
    debug(Security::hash($this->data['Utilizator']['parola'])); 
    debug($this->Auth->login()); 
    /*more here but don't think it's important*/ 

отладкаданных поступает с ожидаемыми значениями, давайте предположим:

**data['Utilizator']['nume']** = 'Cosmin' 
**data['Utilizator']['parola']** = 'Cosmin' 

хэш пароля отладка дают ожидаемый хэш, который я также вручную вставить в базе данных и но функция входа возвращает false.

Я не уверен, что делать дальше, и любая обратная связь будет оценена по достоинству. Кроме того, есть ли способ получить доступ к тому, что отправлено на $ this-> Auth-> login()?

Спасибо

ответ

1

Как оказалось, причина $ this-> Auth-> Логин() при отсутствии моя декларация AuthComponent внутри AppController. После нескольких исследований и неожиданного небольшого, но полезного сообщения в How can I use different model for Auth component in CakePHP 2.0.4? я просмотрел свой код и теперь, похоже, работает.

Опубликовать обзор здесь, если кто-нибудь столкнется с этим.

public $components = array(
    'Session', 
    'Auth' => array(
     'authenticate' => array(
      'Form' => array(
       'userModel' => 'Utilizator', 
       'fields' => array(
        'username' => 'nume', 
        'password' => 'parola' 
       ) 
      ) 
     ), 
     'loginAction' => array('controller' => 'utilizatori', 'action' => 'login'), //Not related to the problem 
     'loginRedirect' => array('controller' => 'utilizatori', 'action' => 'index'), //Not related to the problem 
     'logoutRedirect' => array('controller' => 'utilizatori', 'action' => 'index') //Not related to the problem 
    ) 
); 
Смежные вопросы