好吧,这是个麻烦。代码很简单:
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();