オーダーメイドコース
icon
icon

認証を行ってみる!Laravelでauthを使う方法【初心者向け】

初心者向けにLaravelでauthを使う方法について解説しています。authはユーザー登録やログイン機能を実装する上で必要な認証の処理です。実際に認証を行うプログラムを説明しているので、書きながら理解していきましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Laravelでauthを使う方法について解説します。

ユーザー登録やログイン関係の実装において必要な処理なので、ぜひ書き方を理解しておきましょう。

 

そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプPHP/Laravel講座の内容をもとに紹介しています。

 

田島悠介

今回は、Laravelに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Laravelでauthを使う方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

authとは

一般的には、認証(Ahthentication)や認可(Ahthorization)のことを指します。

認証とは、簡単に言うとユーザー登録やログインのことです。認可とは、特定の条件のユーザーなどに権限を与えることです。

Laravelのプロジェクトにはauthミドルウェアが最初から組み込まれています。

ルート定義やコントローラのコンストラクタでauthミドルウェアを使うと、特定のルートやアクションを、認証済みユーザーだけがアクセスできるよう保護することができます。

 

Laravelの事前の設定

例としてblogというLaravelプロジェクトを作成します。

ターミナルでComposerのcreate-projectコマンドを実行します。作成されたらそのディレクトリに移動します。

composer create-project --prefer-dist laravel/laravel blog "5.5.*"
cd blog/

データベースはSQLiteを使ってみます。ターミナルで以下のように空のデータベースファイルを作成します。

touch database/database.sqlite

作成したデータベースへの接続情報を、.envファイルで設定します。

DB_CONNECTION=sqlite
DB_DATABASE=作成したデータベースファイルの絶対パス

ターミナルでLaravelのartisanコマンドを実行して、認証のためのルート定義、コントローラ、ビューの雛形コードを自動生成します。

php artisan make:auth

ターミナルでLaravelのartisanコマンドを実行して、ローカル開発用の組込みサーバーを起動します。

php artisan serve

ブラウザで http://localhost:8000/ にアクセスして、トップページが表示されることを確認しておきましょう。

 

[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは

認証用のデータベースの設定

usersテーブル、password_resetsテーブルを作成するマイグレーションファイルが、プロジェクトの作成時に生成されています。
ターミナルでLaravelのartisanコマンドを実行して、マイグレートします。

php artisan migrate

 

実際にLaravelのauthで認証を行ってみよう

先ほど、認証のためのルート定義、コントローラ、ビューの雛形コードを自動生成しました。
app/Http/Controllers/HomeController.phpの中でauthミドルウェアが既に使われています。

public function __construct()
{
    $this->middleware('auth');
}

この場合、このコントローラ内の全アクションを、認証済みユーザーだけがアクセスできるよう保護することになります。
HomeContollerには、homeビューを表示するindexアクションが既にありますので、そのアクションが保護されることを確認してみます。
routes/web.phpでこのルートを確認すると、homeというルート名が付けられています。

Route::get('/home', 'HomeController@index')->name('home');

ターミナルでLaravelのartisanコマンドを実行して、このルートを確認してみます。

php artisan route:list —name=home

+--------+----------+------+------+-------------------------------------------+------------+
| Domain | Method   | URI  | Name | Action                                    | Middleware |
+--------+----------+------+------+-------------------------------------------+------------+
|        | GET|HEAD | home | home | AppHttpControllersHomeController@index | web,auth   |
+--------+----------+------+------+-------------------------------------------+------------+

Middlwareの列にauthと書かれており、このルートにauthミドルウェアが使われることが確認できます。

実際にブラウザで「http://localhost:8000/home」にアクセスしてみましょう。

未認証のユーザーがアクセスすると、homeビューは表示されず、ログインページにリダイレクトされることが確認できます。

 

関連記事

Laravel 5.5 認証

この記事を監修してくれた方

杉本 隆也(すぎもとたかや)
フリーランスのアプリケーションエンジニア。

WebアプリやiOSアプリの受託開発をしながら、
TechAcademyではPHP/Laravelコースを担当しています。

開発実績: マッチングサービス、カスタマーサービス、決済ツール、SNSアプリ、音遊びアプリなど。
趣味: 二胡(を始めたい)

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもPHPやフレームワークのLaravelを使ってWebアプリケーション開発を習得できるオンラインブートキャンプPHP/Laravel講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。