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 を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。
