Authミドルウェアを使ってみる

2018/10/12

以前、ミドルウェアについての記事をエントリーしました。

ミドルウェアについて

今回はlaravel5.2で既に用意されているauthミドルウェアを使って特設ページに認証をかけてみます。

 

やりたい事

特設ページを作成してログイン認証をかける

【デモ】http://laraweb.sakura.ne.jp/article/special/top

 

手順

authミドルウェアを使うにあたって認証画面と特設ページを事前に作成します。

(1)認証画面作成

(2)特設ページの作成

   -1. ルーティングの設定

   -2. コントローラにauthミドルウェアを設定

   ー3. Viewファイルの作成

(3)TOPページの作成

 

(1)認証画面作成

認証画面はartisanコマンドで簡単に作成することができます。

Laravel5.2認証機能(ユーザー側)について

 

(2)特設ページの作成

1. ルーティングの設定

Route::get('special/01', 'SpecialController@page01');
Route::get('special/02', 'SpecialController@page02');
Route::get('special/03', 'SpecialController@page03');

 

2. コントローラにauthミドルウェアを設定

artisanコマンドで特設ページのコントローラのスケルトンを作成します。

php artisan make:controller SpecialController

上記のコマンドで作成されたコントローラを編集します。

コンストラクタでauthミドルウェアを設定します。

:
class SpecialController extends Controller
{
  /*
  * 認証
  */
  public function __construct() {
  $this->middleware('auth');
  }

  public function page01() {
  return view('special.page01');
  }

  public function page02() {
  return view('special.page02');
  }

  public function page03() {
  return view('special.page03');
  }

}
今回のポイントになるところです。
コンストラクタとはクラスからオブジェクトがnewによって作成される時(インスタンス生成時)に自動的に呼び出されるメソッドです。
authミドルウェアをコントローラで使うときはこのように記述します。
ミドルウェアについて

 

3. Viewファイルの作成

Bladeのマスターファイル(master_special.blade.php)とブランチファイル(01.blade.php)を作成します。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>@yield('title')</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">

<!-- オプションのテーマ -->
<style>
:
</style>
</head>

<body>

<nav class="navbar navbar-inverse navbar-fixed-top">
  <div class="container">
  <div class="navbar-header">
  <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
  <span class="sr-only">Toggle navigation</span>
  <span class="icon-bar"></span>
  <span class="icon-bar"></span>
  <span class="icon-bar"></span>
  </button>
  <a class="navbar-brand" href="/special/top">認証デモ|特設ページ</a>
  </div>
  <div id="navbar" class="collapse navbar-collapse">
  <ul class="nav navbar-nav">
  <li><a href="special/01/">01</a></li>
  <li><a href="special/02/">02</a></li>
  <li><a href="special/03">03</a></li>
  </ul>

  <!-- Right Side Of Navbar -->
  <ul class="nav navbar-nav navbar-right">
  <!-- Authentication Links -->
  @if (Auth::guest())
  <li><a href="{{ url('/login') }}">Login</a></li>
  <li><a href="{{ url('/register') }}">Register</a></li>
  @else
  <li class="dropdown">
  <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
  {{ Auth::user()->name }} <span class="caret"></span>
  </a>

  <ul class="dropdown-menu" role="menu">
  <li><a href="{{ url('/logout') }}"><i class="fa fa-btn fa-sign-out"></i>Logout</a></li>
  </ul>
  </li>
  @endif
  </ul>

  </div><!--/.nav-collapse -->
  </div>
</nav>

<div class="container" style="margin-top: 30px;">
@yield('content')
</div><!-- /container -->

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>
@extends('layouts.master_special')
@section('title', '認証デモ|特設ページ')
@section('content')

認証デモ(1ページ目)

@endsection

 

(3)TOPページの作成

TOPのルーティングの設定をします。

Route::get('special/top', function () {
  return view('special.top');
});
@extends('layouts.master_special')
@section('title', '認証デモ|特設ページ')
@section('content')

<div class="container">
  <div class="row">
  <div class="col-md-10 col-md-offset-1">
  <div class="panel panel-default">
  <div class="panel-heading">TOP</div>

  <div class="panel-body">
  Laravel5.2<br>
  認証デモンストレーション<br>
  特設ページは<a href="/special/01">こちら</a>
  </div>
  </div>
  </div>
  </div>
</div>

@endsection

以上です。

本庄マサノリ

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら

>> Twitter をフォローする

 

-実践知識