kohana2 auth - проблема со входом

Я пытаюсь создать форму входа для своего приложения kohana2, используя пример ORM, представленный в документации kohana2 (http://docs.kohanaphp.com/addons/auth). Я сделал все, как в вики, но после ввода имени пользователя, пароля и отправки формы ничего не происходит. Ни ошибки, ни исключения, ничего! точно такая же форма без ошибок.

Вот действие контроллера, единственное, что я изменил, это добавление функциональности шаблона: http://pastebin.com/jEc4nqSP < / а>

В строке 42 есть функция die(), она предназначена для отладки. После отправки формы отображается Array ( [username] => invalid ) 1. Я уверен, что у меня есть эти пользовательские данные в базе данных, и я предоставляю правильное имя пользователя и пароль. Роли установлены на login. Вы хоть представляете, что я делаю не так?

Спасибо.


person mbajur    schedule 29.06.2011    source источник


Ответы (2)


В строке 39 вы создаете пустой пользовательский объект ORM. Как минимум, вы обязательно хотите:

ORM::factory('user', $post['username'])

Хотя вы, вероятно, захотите реорганизовать это, поэтому он фактически проверяет, установлено ли значение имени пользователя.

person Rowan Parker    schedule 30.06.2011
comment
к сожалению, это все еще не работает. Я по-прежнему получаю тот же результат die (). Кстати, разве login($post) метод не обрабатывает $post['username']? - person mbajur; 30.06.2011

Хорошо, проблема решена! Все, что нам нужно сделать, это создать нового пользователя с этим кодом (контроллер регистрации из документации kohana2):

<?php
// grab relevant $_POST data
$username = $this->input->post('username');
$password = $this->input->post('password');

// instantiate User_Model and set attributes to the $_POST data
$user = ORM::factory('user');
$user->username = $username;
$user->password = Auth::instance()->hash_password($password);

// if the user was successfully created...
if ($user->add(ORM::factory('role', 'login')) AND $user->save()) {

    // login using the collected data
    Auth::instance()->login($username, $password);

    // redirect to somewhere         
    url::redirect('user/profile');
}

Предыдущие данные для входа администратора не работали, потому что пароль не был хеширован должным образом.

person mbajur    schedule 08.10.2011