確認環境:
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なんかでも、スカフォールディングという言葉は使うと思う。
して、
http://127.0.0.1:8000
にアクセスする。
以下のように、画面右上に、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でデータベースを新規作成する。
create database larademo01;
use larademo01;
laravelでmigrateする
MySQLでテーブルが出来ているか確認する
4つテーブルが出来ている。usersテーブルにユーザーが登録される。
+----------------------+
| Tables_in_larademo01 |
+----------------------+
| failed_jobs |
| migrations |
| password_resets |
| users |
+----------------------+
4 rows in set (0.00 sec)
php artisan serve をし直して、
http://127.0.0.1:8000
にアクセスする。
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']),
]);
}
参考サイト
Laravel 7.x 認証