1

我是 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);
    }

}

引导程序.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=>主键用户名密码salt created

我有

而且我每次都会收到“不欢迎......”的消息。我不确定我哪里出错了。

4

1 回答 1

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();

这假设您仍在使用 classes/models/user.php 或 classes/models/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,

除非你需要这样存储创建的,

如果由于某种原因你需要扩展用户其他模型,你应该看看如何扩展它。但我建议研究角色的工作原理,然后您可以保留用户并为其分配管理员角色。

我希望这有帮助

问候安德烈斯

于 2013-02-26T01:27:11.957 回答