我无法登录Kohana 3.2 ORM Auth模块?

时间:2012-09-12 04:15:42

标签: kohana-3.2 kohana-auth

嗯,这很麻烦。代码很简单:

public function action_index()
{

    $post = $this->request->post();

    if ($post) {    
        // if I type it like this, manually - it will work
        $success = Auth::instance()->login('admin','password');

    }

    if (isset($success) and $success) { echo "Пользователь залогинен"; }

}

不幸的是,它只登录数据库中的第一条记录,这是admin默认配置在表中,如果我创建一个新用户。像这样:

$auth = Auth::instance();
        $user = new Model_User();
        $user->username = "Victor";
        $user->$auth->hash_password('psw123');
        $user->email = "me@email.com";
        $user->save();

而不是像我说的那样使用它,只使用真实的数据

$post["email"] or $post["username"] with $post["password"]

代码:

if ($post) {    
    // the values from posts: 'Victor' or 'me@email.com` & 'psw123'
    $success = Auth::instance()->login('me@email.com','psw123');

}

它不会登录我。

upd 我无法以管理员身份登录,但如果我将角色更改为login(数据库中为1),则所有工作都完美无缺。但是,如果该角色将设置为2(它是admin个角色),则不会接受我,即使不创建Auth的实例。

        $post = $this->request->post();

        $success = Auth::instance()->login($post['email'], $post['pass']);


        if ($success)
        {
            echo "SUCCESS!";
        }

再次,如果角色将是2(这意味着管理员),那么成功我将取代login角色。

造成这种麻烦的原因是什么?

1 个答案:

答案 0 :(得分:2)

我假设你正在使用默认的ORM auth驱动程序。保存新用户时无需哈希密码 - 它由模型中的过滤器自动完成。因此,保存新用户应该是这样的:

$user = ORM::factory("user");
$user->username = "Victor";
$user->password = "psw123";
$user->email = "me@email.com";
$user->save();