我无法登录 Kohana 3.2 ORM 身份验证模块?



好吧,这是个麻烦。代码很简单:

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,表中的配置是If I create a new user。像这样:

$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(意味着管理员),这不是Success me,而不是login角色。

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

我假设您使用的是默认的ORM身份验证驱动程序。保存新用户时,您不需要对密码进行哈希处理,这是由模型中的过滤器自动完成的。所以保存一个新用户应该是这样的:

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

最新更新