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', ],
(注意) WindowsのMySQLに、Linuxから接続する場合は、localhostを127.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/ にアクセスすると、ログイン画面が表示されて、
admin/admin123でログインすると、ホームページが表示されました。
めでたし、めでたし。