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コマンドで簡単に作成することができます。
(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ミドルウェアをコントローラで使うときはこのように記述します。
ミドルウェアについて
コンストラクタとはクラスからオブジェクトが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 を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。