Модуль Auth Kohana не может войти - PullRequest
3 голосов
/ 17 ноября 2009

Для тех, кто знаком с модулем Auth в Kohana, я не могу войти в систему пользователя. Я могу создать пользователя нормально, но, очевидно, хэши не совпадают. Я использовал схему предоставления MySql для создания БД, и я использую модели модулей.

Вот мой код для создания пользователя:

    public function user_create()
    {
        $user = ORM::factory('user');
        $user->username = "user";

        $this->auth = Auth::instance();

        $user->email = "info@test.com";
        $user->password = $this->auth->hash_password('admin');
        $user->add(ORM::factory('role', 'login'));
        $user->add(ORM::factory('role', 'admin'));

        if ($user->save())
            {
                $this->template->title = "user saved";
                $this->template->content = "user saved";
            }
        }

Создает пользователя с хешированным паролем и назначает ему надлежащие роли для входа в систему и администрирования. Все отлично выглядит в БД. Вот мой код для входа. Я пропустил начальную часть, которая проверяет, вошел ли пользователь в систему.

            $user = $this->input->post('username');
        $password = $this->input->post('password');

        if(!empty($user))
            {
                $find_user = ORM::factory('user')->where('username', $user)->find();
                $username = $find_user->username;

                $this->auth = Auth::instance();

                if($this->auth->login($username, $password))
                    {
                        $error = "logged in";
                    }
                else
                    {
                        $error = "not logged in at all";
                    }
            }

        $this->template->content = new View('admin/login_view');
        $this->template->content->user_info = $username . " " . $password;
        $this->template->title = "Login Admin";
        $this->template->content->bind('error', $error);

Всегда возвращает «не авторизован». Я подтверждаю, что ввел правильное имя пользователя и пароль, но он не входит в систему. Я не могу понять, почему. Я использую встроенную функцию hash_password, чтобы создать пароль, и я следовал за документами, но я не могу определить ошибку. Любая помощь?

1 Ответ

12 голосов
/ 18 ноября 2009

Модуль Auth в kohana автоматически хэширует пароль, когда вы устанавливаете его с помощью метода __set (). Поэтому для того, чтобы вы сохранили свой пароль, просто сделайте так:

public function user_create()
    {
            $user = ORM::factory('user');
            $user->username = "user";

            $this->auth = Auth::instance();

            $user->email = "info@test.com";
            $user->password = 'admin';
...

Надеюсь, это поможет. Если вы хотите проверить модуль auth (models / auth_user.php), вы можете увидеть, что он хэширует пароль:

public function __set($key, $value)
{
    if ($key === 'password')
    {
        // Use Auth to hash the password
        $value = Auth::instance()->hash_password($value);
    }

    parent::__set($key, $value);
}
...