2013-02-21 1 views
1

Я являюсь noob для Kohana и пытался реализовать функции входа в систему, используя Auth ORM. Ниже код, который я написал:Kohana: Auth ORM

/classes/controller/admin.php

<?php defined('SYSPATH') or die('No direct script access.'); 

class Controller_Admin extends Controller_Default 
{ 
    public function action_index() 
    {    
     // Enter a new user manually 
     $user = ORM::factory('admin'); 
     $user->username = 'admin'; 
     $user->password = 'password';   
     $user->save(); 

     // Login with this user 
     $success = Auth::instance()->login('admin','password','admin'); 
     if ($success){ 
      echo "Welcome !"; 
     }else{ 
      echo "Not welcome..."; 
     } 
    } 

} 

/classes/models/admin.php

<?php defined('SYSPATH') or die('No direct access allowed.'); 


class Model_Admin extends ORM { 

    public function save(Validation $validation = NULL) 
    { 
     $this->salt = uniqid(); 
     $this->password = Auth::instance()->hash($this->password, $this->salt); 
     $this->created = date('Y-m-d'); 

     parent::save($validation); 
    } 

} 

bootstrap.php

Kohana::modules(array(
    'auth'  => MODPATH.'auth',  // Basic authentication 
    // 'cache'  => MODPATH.'cache', auth // Caching with multiple backends 
    // 'codebench' => MODPATH.'codebench', // Benchmarking tool 
    'database' => MODPATH.'database', // Database access 
    // 'image'  => MODPATH.'image',  // Image manipulation 
    'orm'  => MODPATH.'orm',  // Object Relationship Mapping 
    // 'unittest' => MODPATH.'unittest', // Unit testing 
    // 'userguide' => MODPATH.'userguide', // User guide and API documentation 
    )); 

Cookie::$salt = 'somerandomstring'; 

Структура таблицы базы данных выглядит следующим образом: id => первичный ключ имя пользователя пароль соль создал

У меня есть

И я получаю сообщение «Не Добро пожаловать ...» каждый раз. Я не уверен, где я ошибаюсь.

ответ

0

Я вижу несколько думает, что может помочь здесь

Auth::instance()->login('admin','password','admin'); 

третий параметр должен быть логическое значение, а не строка, она позволяет автоматически Войти

http://kohanaframework.org/3.3/guide-api/Auth_ORM#login

по умолчанию использование Kohana Auth Модель пользователя в качестве объекта для аутентификации, поэтому я бы использовал

$user = ORM::factory('User'); 
    $user->username = 'admin'; 
    $user->password = 'password';   
    $user->save(); 

Это предполагается, что вы все еще используете классы/модели/User.php вместо или классы/модели/admin.php, главным образом, для шифрования проход, который вы используете, но даже то, что нужно, вы можете использовать следующую

ORM::factory('user')->create_user($this->request->post(), array(
       'username', 
       'password', 
       'email' 
      )); 

http://kohanaframework.org/3.3/guide-api/Model_User#create_user

так что вы на самом деле не нужно создать

классов/модель/user.php или

классов/модель/admin.php,

, если вам не нужен магазин, который создан,

Если по какой-то причине вам необходимо расширить пользовательскую модель, вы должны посмотреть, как ее расширить. Но я бы рекомендовал посмотреть, как работают роли, а затем вы можете сохранить пользователя и назначить ему роль администратора.

Я надеюсь, что это помогает

С уважением Андрес