これからWeb開発のバックエンドを学ぶ in 2018(PHP7編 - 0.72日目)|認証

これからWeb開発のバックエンドを学ぶ in 2018(PHP7編 - 0.7日目))の続きです。

Udemyのオンライン教材【2日でできる】はじめての PHP 7 x Laravel 5.5 入門
レクチャー70:Scaffoldのライブラリを追加しよう、まで来ました。

教材の開発環境とLaradockで作成したローカル開発環境の相違点を発見

また前回同様、ここでも私がLaradockを使って構築したPHP7/Laravel開発環境と、教材の環境で相違がありました。
これもLaravelのマイナーバージョンによるものです。

教材の開発環境

PHP: v7.0.2
Laravel: 5.5

Laradockで作った開発環境

#workspaceコンテナにアクセス
docker-compose exec  workspace bash

#PHPのバージョン
php -v

PHP 7.2.0-2+ubuntu16.04.1+deb.sury.org+2 (cli) (built: Dec  7 2017 20:14:31) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.2.0-2+ubuntu16.04.1+deb.sury.org+2, Copyright (c) 1999-2017, by Zend Technologies

#Laravelのバージョン
composer show laravel/framework | grep versions

versions : * v5.6.12

まずは、認証周りの機能をphp artisanコマンドで一式丸ごと追加してみる

#workspaceコンテナにアクセス
docker-compose exec  workspace bash

#make:authと言うのがLaravelで予約語のような黒魔術になっていて、
#自動的に認証周りのビュー機能を一式を全て追加してくれる感じ???
#コントローラー系はLaravelが標準搭載してる認証機能があってそれを使う模様。
php artisan make:auth --views

コマンド実行結果の出力ソース

スクリーンショット 2018-03-17 13.07.43.png

起動後の画面

スクリーンショット 2018-03-17 13.10.28.png

→app.blade.phpが変更され、ナビゲーションバーへ勝手に「Login」「Register」がくっついたホーム画面に変わった。

「Login」ナビゲーション押下

スクリーンショット 2018-03-17 13.12.51.png

→ログイン画面が表示された

「Register」ナビゲーション押下

スクリーンショット 2018-03-17 13.14.42.png

→ユーザ登録画面が表示された

ルーティング時の認証チェック

・全般的なチェックを自分でRoute::auth()として追加。各ルーティングの処理実行前にミドルウェアでも認証。

app/routes/web.php
Route::group(['middleware' => ['web']], function() {
  ・・・・・・
-    Route::get('/', function() {
+    Route::get('/', ['middleware' => 'auth', function() {
        $books = Book::all();
        return view('books', [
            'books' => $books
        ]);
-    });
+    }]);

+  Route::auth();
});

ユーザ登録して、ログインしてみた

スクリーンショット 2018-03-17 13.19.19.png

→ナビゲーションバーにユーザ名表示されて、ログアウトのプルダウンが選べるようになってた!

すげー、これだけで、なんか基本としては出来ちゃった!!!
で、ここから見つけた相違点です。

見つけた認証の相違点

・Laravelが標準搭載している認証機能が少し違いました。
・教材環境はBootstrap3だけど、Laradock環境で生成したらBootstrap4のソース吐き出しました。
・教材環境のナビゲーションバーには「HOME」が追加されてたけど、Laradock環境では出ませんでした。

教材環境のLaravel標準搭載の認証処理

app/Http/Controllers/Auth/AuthContoroller.php
app/Http/Controllers/Auth/PasswordContoroller.php

Laradockで作った開発環境のLaravel標準搭載の認証処理

app/Http/Controllers/Auth/LoginController.php
app/Http/Controllers/Auth/RegisterController.php
app/Http/Controllers/Auth/ForgotPasswordController.php
app/Http/Controllers/Auth/ResetPasswordController.php

標準搭載してる認証処理のファイルの場所は同じだけど用意されてるファイルが違う

ファイルは異なっていますが、処理を分割しただけで実質は同じなのか、
あるいは進化しているのか、その辺りはわかりません。

ただ、それを全く意識せずに、ほぼphp artisan make:authコマンド一発で作れました。
すごいです。

勉強で作ってるプロジェクトのソース

https://github.com/masaaki-uegaki/bookapp

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.