確認環境:
Windows10、Laravel 7.30.4、PHP 7.2.33、MySQL 5.7.30
Loginページを作る
まずは、Laravelプロジェクト(ver 7.*)を新規作成する
composer create-project --prefer-dist laravel/laravel larademo01 "7.*"
以下のコマンドで、Loginページ(認証機能)を追加する
composer require laravel/ui php artisan ui vue --auth
公式サイトによると、このコマンドは、プロジェクト新規作成直後に行うことを勧めています。
このように、コマンド1発で必要なものが準備できることを、スカフォールディングという。
多分、Ruby on Railsなんかでも、スカフォールディングという言葉は使うと思う。
php artisan serve
すると、自動的に以下の4つテーブルが作成されます。
Login時に登録したユーザーは、userテーブルに登録されます。

にアクセスする。
以下のように、画面右上に、LOGINとREGISTERが表示される。

DBの設定
REGISERページに移動して、ユーザー登録してみる。

エラーになる。
Illuminate\Database\QueryException SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) (SQL: select count(*) as aggregate from `users` where `email` = 0gravity000@gmail.com) http://127.0.0.1:8000/register
原因はDB設定をしていないため。
なので、MySQLでDB設定をする。
.envファイルを編集する
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=larademo01 DB_USERNAME=root DB_PASSWORD=pass
MySQLのルートユーザーでログインする
ここでルートユーザーのパスワードを入力する
mysql -u root -p
MySQLでデータベースを新規作成する。
create database larademo01; use larademo01;
laravelでmigrateする
php artisan migrate
MySQLでテーブルが出来ているか確認する
show tables;
4つテーブルが出来ている。usersテーブルにユーザーが登録される。
+----------------------+ | Tables_in_larademo01 | +----------------------+ | failed_jobs | | migrations | | password_resets | | users | +----------------------+ 4 rows in set (0.00 sec)
php artisan serve をし直して、
にアクセスする。
REGISERページに移動して、ユーザー登録する。
今度は成功する。

MySQL Workbenchで確認する。
usersテーブルに登録したユーザーが登録されている。

リダイレクトパスのカスタマイズ
認証に成功すると、
/home URIへリダイレクトします。
認証後のリダイレクトパスをカスタマイズするには、
RouteServiceProvider の中で
HOME 定数を定義する。
\app\Providers\RouteServiceProvider.php
/** * The path to the "home" route for your application. * * @var string */ public const HOME = '/home';
認証名のカスタマイズ
デフォルトでは、email フィールドを認証に利用している。
変更するには、LoginController で username メソッドを定義する。
\app\Http\Controllers\Auth\LoginController.php
public function username() { return 'username'; }
ガードのカスタマイズ
???
バリデーション/保管域のカスタマイズ
\app\Http\Controllers\Auth\RegisterController.php
/** * Get a validator for an incoming registration request. * * @param array $data * @return \Illuminate\Contracts\Validation\Validator */ protected function validator(array $data) { return Validator::make($data, [ 'name' => ['required', 'string', 'max:255'], 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], 'password' => ['required', 'string', 'min:8', 'confirmed'], ]); }
/** * Create a new user instance after a valid registration. * * @param array $data * @return \App\User */ protected function create(array $data) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), ]); }
参考サイト
1件のコメント