Post

Laravelでログイン機能を実装する

Laravelでログイン機能を実装する

Laravel Authを使用してログイン,会員登録機能を実装します。

事前準備

1. Laravel UIパッケージのインストール

1
composer require laravel/ui

2. ログインUIの作成

1
php artisan ui vue --auth

bootstrap, vue, react の基準の認証 UIを作成できますが、ここではvueを使用します。

1
2
npm install
npm run dev

必要なパッケージをインストールして、ログインUIを作成します。

3. ログインUIの確認

1
php artisan serve

サーバを起動したら、http://localhost:8000/login にアクセスしてログイン画面を確認します。

login

4. テーブル作成

dockerのmysqlに接続して、ユーザ情報テーブルを作成します。

1
2
3
4
5
6
7
8
CREATE TABLE members (
    customer_id INT AUTO_INCREMENT PRIMARY KEY, -- 顧客ID
    name VARCHAR(255) NOT NULL,                -- 名前
    email VARCHAR(255) UNIQUE NOT NULL,        -- メールアドレス
    password VARCHAR(255) NOT NULL,            -- パスワード
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 作成日
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP -- 更新日
);

5. ユーザモデルの作成

ユーザ情報モデルを作成します。

1
php artisan make:model Member

app/Models/Member.phpが作成されました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class Member extends Authenticatable
{
    use Notifiable;

    protected $table = 'members'; 
    protected $primaryKey = 'customer_id'; 

    protected $fillable = [
        'name', 'email', 'password'
    ];

    public $timestamps = true; // created_at, updated_at 

    protected $hidden = [
        'password',
    ];
}

内容を修正します。

6. config/auth.php修正

config/auth.phpを編集して、ユーザモデルを設定します。

1
2
3
4
5
6
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\Member::class,
    ],
],

デフォルトではUsersテーブルを使用しますが、今回は先ほど作成したmembersテーブルを使用するように設定しました。

7. RegisterController.php修正

app/Http/Controllers/Auth/RegisterController.phpを編集して、ユーザ情報テーブルを使用するように設定します。

1
2
3
4
5
6
7
8
9
<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Models\Member;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\Models\Member
     */
    protected function create(array $data)
    {
        return Member::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }

8. 会員登録テスト

http://localhost:8000/register にアクセスして、会員登録画面を確認します。

register

ユーザ登録画面が表示されました。

This post is licensed under CC BY 4.0 by the author.