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

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

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

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

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

 

なお本記事は、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のプログラミングで挫折しない学習方法を動画で公開中

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

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 | App\Http\Controllers\HomeController@index | web,auth   |
+--------+----------+------+------+-------------------------------------------+------------+

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

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

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

 

関連記事

Laravel 5.5 認証

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

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

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

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

 

大石ゆかり

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

田島悠介

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

大石ゆかり

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

オンラインのプログラミングスクールTechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

PHPやフレームワークのLaravelを使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。