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的主要内容,如果未能解决你的问题,请参考以下文章