0

まあ、それは問題です。コードは簡単です:

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 "Пользователь залогинен"; }

}

残念ながら、新しいユーザーを作成すると、デフォルトで構成がテーブルにあったため、データベースの最初のレコードのみにログインします。これは管理者です。このような:

$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

このトラブルの原因は何ですか?

4

1 に答える 1

2

デフォルトの ORM 認証ドライバーを使用していると仮定しています。新しいユーザーを保存するときにパスワードをハッシュする必要はありません。モデルのフィルターによって自動的に行われます。したがって、新しいユーザーを保存すると、次のようになります。

$user = ORM::factory("user");
$user->username = "Victor";
$user->password = "psw123";
$user->email = "me@email.com";
$user->save();
于 2012-09-12T16:51:21.393 に答える