1

私はコハナの初心者で、AuthORMを使用してログイン機能を実装しようとしていました。以下は私が書いたコードです:

/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=>主キーユーザー名パスワードソルトが作成されました

私は持っています

そして、毎回「歓迎されません...」というメッセージが表示されます。どこが間違っているのかわかりません。

4

1 に答える 1

0

私はここで役立つかもしれないいくつかの考えを見ます

Auth::instance()->login('admin','password','admin');

3番目のパラメーターは文字列ではなくブール値である必要があります。これにより自動ログインが有効になります

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または

classes / models / admin.php、

作成したものを保存する必要がない限り、

何らかの理由でユーザーの他のモデルを拡張する必要がある場合は、それを拡張する方法を検討する必要があります。ただし、役割がどのように機能するかを調べることをお勧めします。そうすれば、ユーザーを維持して管理者の役割を割り当てることができます。

これがお役に立てば幸いです

よろしくアンドレス

于 2013-02-26T01:27:11.957 に答える