47歳でやむなくセミリタイア

病気のためセミリタイアをすることに。現在は週20時間程度のバイトをしています。その他、雑多なことを記録として書いています。

Yii2の使い方: データーベース設定とログイン認証

Yii2使い方メモの続き。今回はログイン認証ができるまでです。

advanceのbackend (yii-application/backend/web)で、データーベースにユーザを登録してログインできるようにします。

以下の設定を使う前提です。

  • データベース名: yii2db
  • ユーザ名: admin
  • password: admin123
  • yii-applicationにadvancedのテンプレートをインストール
  • http://localhost/yii で、yii-application/backend/webにアクセスできる

まず、データベース(MySQL)を設定します。

MySQLの設定

MySQLのコンソールから、使用するデータベースとユーザを作成して、ユーザにデータベースの操作をすべて許可しておきます。

mysql> CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin123';
mysql> CREATE DATABASE yii2db CHARACTER SET utf8 COLLATE utf8_unicode_ci;
mysql> GRANT ALL PRIVILEGES ON yii2db.* TO admin@localhost;

Yii2のデータベース設定

yii-application/common/config/main-local.php にデータベースとユーザの設定をします。

        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=127.0.0.1;dbname=yii2db',
            'username' => 'admin',
            'password' => 'admin123',
            'charset' => 'utf8',
        ],

(注意) WindowsMySQLに、Linuxから接続する場合は、localhost127.0.0.1に変更する必要があります。

migrationを作成

migrationはyii2に用意されている、データベースのテーブルの作成や、レコードの追加などを簡易に行うための仕組みです。簡単なスクリプトを書くことで、様々なデータベース操作が行なえます。色々と便利なのですが、詳しい説明は省きます。後で書くかも。
ログインのためのデーターベース作成用のスクリプトは用意されていますので、そのデータベースにログイン用のユーザを追加するためのスクリプトを追加します。

$ ./yii migrate/create add_test_user
Yii Migration Tool (based on Yii v2.0.25)

Create new migration '/mnt/c/wamp64/www/yii-application/console/migrations/m190828_081441_add_test_user.php'? (yes|no) [no]:yes

作成されたm190828_081441_add_test_user.phpを編集します。

    public function safeUp()
    {
        $this->insert('{{%user}}', [
            'username' => 'admin',
            'auth_key' => '',
            'password_hash' => '$2y$13$CpOD8kNom8M.zZ7nJ9rYBOD3uTrnY/HFzvWOVkwabNDZwUiUgnTte',
            'password_reset_token' => '',
            'email' => 'hogehoge@yii.jp',
            'created_at' => '2019-08-28 10:00:00',
            'updated_at' => '2019-08-28 10:00:00',
        ]);
    }

テーブル作成と、ユーザ追加のスクリプトを実行します。

$ ./yii migration

そうして、http://localhost/yii/ にアクセスすると、ログイン画面が表示されて、
f:id:ekutajp:20190828173959p:plain
admin/admin123でログインすると、ホームページが表示されました。
f:id:ekutajp:20190828174130p:plain
めでたし、めでたし。