Kohana:授权 ORM

Posted

技术标签:

【中文标题】Kohana:授权 ORM【英文标题】:Kohana: Auth ORM 【发布时间】:2013-02-21 09:54:13 【问题描述】:

我是 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=>主键 用户名 密码 盐 已创建

我有

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

【问题讨论】:

【参考方案1】:

我在这里看到了一些可能会有所帮助的想法

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

所以你实际上不需要创建一个

classes/models/user.php 或

类/模型/admin.php,

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

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

希望对你有帮助

问候 安德烈斯

【讨论】:

以上是关于Kohana:授权 ORM的主要内容,如果未能解决你的问题,请参考以下文章

Kohana 3.1 都有哪些可用的 ORM 解决方案?

KOHANA:ORM + MySQL 找不到表

Kohana 3 ORM:构造函数“加载后”

Kohana ORM,在模型中定义字段

Kohana-v3 ORM 父关系

如何在 Kohana 中使用 ORM 连接表