Enviar búsqueda
Cargar
認証機能で学ぶ Laravel 5 アプリケーション
•
19 recomendaciones
•
17,886 vistas
Masashi Shinbara
Seguir
第21回関西PHP勉強会
Leer menos
Leer más
Software
Denunciar
Compartir
Denunciar
Compartir
1 de 39
Recomendados
Vagrant で作る PHP 開発環境 [実践編]
Vagrant で作る PHP 開発環境 [実践編]
Masashi Shinbara
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
Masashi Shinbara
Heroku で作る スケーラブルな PHP アプリケーション
Heroku で作る スケーラブルな PHP アプリケーション
Masashi Shinbara
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
ビルドサーバで使うDocker
ビルドサーバで使うDocker
Masashi Shinbara
Vagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオン
Masashi Shinbara
開発現場で活用するVagrant
開発現場で活用するVagrant
Masashi Shinbara
わかってるフレームワーク Laravel
わかってるフレームワーク Laravel
Masashi Shinbara
Recomendados
Vagrant で作る PHP 開発環境 [実践編]
Vagrant で作る PHP 開発環境 [実践編]
Masashi Shinbara
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない! Vagrant で作る PHP 開発環境
Masashi Shinbara
Heroku で作る スケーラブルな PHP アプリケーション
Heroku で作る スケーラブルな PHP アプリケーション
Masashi Shinbara
Ansible ではじめるサーバ作業の自動化
Ansible ではじめるサーバ作業の自動化
Masashi Shinbara
ビルドサーバで使うDocker
ビルドサーバで使うDocker
Masashi Shinbara
Vagrant で PHP 開発環境を作る ハンズオン
Vagrant で PHP 開発環境を作る ハンズオン
Masashi Shinbara
開発現場で活用するVagrant
開発現場で活用するVagrant
Masashi Shinbara
わかってるフレームワーク Laravel
わかってるフレームワーク Laravel
Masashi Shinbara
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
Masashi Shinbara
Vagrant体験入門
Vagrant体験入門
Masashi Shinbara
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログイン
Masashi Shinbara
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
Masashi Shinbara
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみよう
Masashi Shinbara
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
VagrantからDockerに開発環境を移行した時の話
VagrantからDockerに開発環境を移行した時の話
Daijiro Abe
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
Vagrant入門以前
Vagrant入門以前
katanyan
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
Masashi Shinbara
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Way
ロフト くん
Laravel5を使って開発してみた
Laravel5を使って開発してみた
Takeo Noda
130412 kayac-cinnamon
130412 kayac-cinnamon
Yuki Shibazaki
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングする
Ryo Adachi
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
Takeshi Kuramochi
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
HHVM/Hackを本番投入した話
HHVM/Hackを本番投入した話
Kenjiro Kubota
ZabbixとAWS
ZabbixとAWS
真乙 九龍
microPCFを使ってみよう
microPCFを使ってみよう
Hiroaki_UKAJI
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry
Tomohiro Ichimura
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
Masashi Shinbara
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Más contenido relacionado
La actualidad más candente
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
Masashi Shinbara
Vagrant体験入門
Vagrant体験入門
Masashi Shinbara
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログイン
Masashi Shinbara
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
Masashi Shinbara
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみよう
Masashi Shinbara
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
VagrantからDockerに開発環境を移行した時の話
VagrantからDockerに開発環境を移行した時の話
Daijiro Abe
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
Takeshi Komiya
Vagrant入門以前
Vagrant入門以前
katanyan
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
Masashi Shinbara
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Way
ロフト くん
Laravel5を使って開発してみた
Laravel5を使って開発してみた
Takeo Noda
130412 kayac-cinnamon
130412 kayac-cinnamon
Yuki Shibazaki
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングする
Ryo Adachi
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
Takeshi Kuramochi
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
HHVM/Hackを本番投入した話
HHVM/Hackを本番投入した話
Kenjiro Kubota
ZabbixとAWS
ZabbixとAWS
真乙 九龍
microPCFを使ってみよう
microPCFを使ってみよう
Hiroaki_UKAJI
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry
Tomohiro Ichimura
La actualidad más candente
(20)
Azure Websites で作るスケーラブルな PHP アプリケーション
Azure Websites で作るスケーラブルな PHP アプリケーション
Vagrant体験入門
Vagrant体験入門
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログイン
Vagrant を Web開発環境に使う
Vagrant を Web開発環境に使う
Twilio API を PHP で触ってみよう
Twilio API を PHP で触ってみよう
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
VagrantからDockerに開発環境を移行した時の話
VagrantからDockerに開発環境を移行した時の話
Pythonユーザのための構成管理入門 #pyconapac
Pythonユーザのための構成管理入門 #pyconapac
Vagrant入門以前
Vagrant入門以前
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
レイヤードアーキテクチャを意識した PHPアプリケーションの構築 ver2
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Way
Laravel5を使って開発してみた
Laravel5を使って開発してみた
130412 kayac-cinnamon
130412 kayac-cinnamon
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansibleを使ってdockerコンテナをプロビジョニングする
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
HHVM/Hackを本番投入した話
HHVM/Hackを本番投入した話
ZabbixとAWS
ZabbixとAWS
microPCFを使ってみよう
microPCFを使ってみよう
(続) はじめてのCloud Foundry
(続) はじめてのCloud Foundry
Destacado
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
Masashi Shinbara
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Laravelとテストについて
Laravelとテストについて
Takeo Noda
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
Laravelの認証について
Laravelの認証について
Takeo Noda
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
Kazuaki KURIU
Laravelチュートリアルを作ってみた。
Laravelチュートリアルを作ってみた。
Futoshi Endo
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
Kouhei Sutou
アプリチームを支えるSlack bot
アプリチームを支えるSlack bot
Kazuaki KURIU
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
Syouta Tada
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
Kouhei Sutou
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Fumiya Sakai
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
Fumihiko Shiroyama
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
Fumiya Sakai
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
Fumiya Sakai
JavaScriptから利用するFirebase
JavaScriptから利用するFirebase
Takuji Shimokawa
Laravel LT
Laravel LT
Iwama Ryo
3 tips of Laravel
3 tips of Laravel
Kazuaki KURIU
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
Yuuki Takezawa
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
Mayumi Narisawa
Destacado
(20)
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
今日から始めるLaravel
今日から始めるLaravel
Laravelとテストについて
Laravelとテストについて
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
Laravelの認証について
Laravelの認証について
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
[Laravel] CRUDアプリから一歩踏み出す3つのアプローチ
Laravelチュートリアルを作ってみた。
Laravelチュートリアルを作ってみた。
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
MySQL・PostgreSQLだけで作る高速でリッチな全文検索システム
アプリチームを支えるSlack bot
アプリチームを支えるSlack bot
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
PHPでPostgreSQLとPGroongaを使って高速日本語全文検索!
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseでのファイルアップロード処理と便利ライブラリの紹介
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
Firebaseで驚くほど簡単に作れるリアルタイムイベントドリブンアプリ
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
指の動きや遷移時等のアニメーションを生かしたUIのサンプル解説
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
カスタムトランジションやジェスチャーを生かしたUIの実装ポイント
JavaScriptから利用するFirebase
JavaScriptから利用するFirebase
Laravel LT
Laravel LT
3 tips of Laravel
3 tips of Laravel
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
デザイナーがXcodeを使って 開発効率をUPさせた 5つのエピソード + 現場エンジニアのコメント付き
Similar a 認証機能で学ぶ Laravel 5 アプリケーション
FuelPHPでSentry導入
FuelPHPでSentry導入
fagai
React(TypeScript) + Go + Auth0 で実現する管理画面
React(TypeScript) + Go + Auth0 で実現する管理画面
KentaEndoh
Service Workerとの戦い ~ 実装編 ~ #scripty03
Service Workerとの戦い ~ 実装編 ~ #scripty03
Yahoo!デベロッパーネットワーク
111008 silverlight square_datavalidation
111008 silverlight square_datavalidation
Takayoshi Tanaka
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
Masatoshi Tada
8分で分かる最近のCakePHP
8分で分かる最近のCakePHP
Masashi Shinbara
20111203
20111203
小野 修司
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
Yuji Takayama
Using Dancer
Using Dancer
Yoshihiro Sasaki
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Fumito Mizuno
Cakephpstudy5 hacks jp
Cakephpstudy5 hacks jp
Hiroki Shimizu
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方
Hiroshi Oyamada
Visualforce + jQuery
Visualforce + jQuery
Salesforce Developers Japan
iOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱い
niwatako
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
Yuji Takayama
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
Shohei Okada
Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!
一希 大田
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
Ayumu Kawaguchi
Google App Engineでできる、あんなこと/こんなこと
Google App Engineでできる、あんなこと/こんなこと
a-know
Laravel本とコミュニティの話
Laravel本とコミュニティの話
Kazuaki KURIU
Similar a 認証機能で学ぶ Laravel 5 アプリケーション
(20)
FuelPHPでSentry導入
FuelPHPでSentry導入
React(TypeScript) + Go + Auth0 で実現する管理画面
React(TypeScript) + Go + Auth0 で実現する管理画面
Service Workerとの戦い ~ 実装編 ~ #scripty03
Service Workerとの戦い ~ 実装編 ~ #scripty03
111008 silverlight square_datavalidation
111008 silverlight square_datavalidation
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
これで怖くない!?コードリーディングで学ぶSpring Security #中央線Meetup
8分で分かる最近のCakePHP
8分で分かる最近のCakePHP
20111203
20111203
Data apiで実現 進化するwebの世界
Data apiで実現 進化するwebの世界
Using Dancer
Using Dancer
FuelPHP Osu Nagoya vol.1
FuelPHP Osu Nagoya vol.1
Cakephpstudy5 hacks jp
Cakephpstudy5 hacks jp
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方
Visualforce + jQuery
Visualforce + jQuery
iOS の通信における認証の種類とその取り扱い
iOS の通信における認証の種類とその取り扱い
初めての Data api cms どうでしょう - 大阪夏の陣
初めての Data api cms どうでしょう - 大阪夏の陣
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!
Ec cube開発合宿 プラグインセミナー
Ec cube開発合宿 プラグインセミナー
Google App Engineでできる、あんなこと/こんなこと
Google App Engineでできる、あんなこと/こんなこと
Laravel本とコミュニティの話
Laravel本とコミュニティの話
Más de Masashi Shinbara
日本語消えたスライド
日本語消えたスライド
Masashi Shinbara
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-
Masashi Shinbara
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
Masashi Shinbara
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Masashi Shinbara
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from Authentication
Masashi Shinbara
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
Masashi Shinbara
VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門
Masashi Shinbara
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!
Masashi Shinbara
Composer 再入門
Composer 再入門
Masashi Shinbara
いまどきのPHP
いまどきのPHP
Masashi Shinbara
PHP 5.5 Zend OPcache
PHP 5.5 Zend OPcache
Masashi Shinbara
サーバの防災訓練
サーバの防災訓練
Masashi Shinbara
Kansai PHP Users Group 2012年活動報告
Kansai PHP Users Group 2012年活動報告
Masashi Shinbara
10分で分かる最近のCakePHP
10分で分かる最近のCakePHP
Masashi Shinbara
Más de Masashi Shinbara
(14)
日本語消えたスライド
日本語消えたスライド
Twilio入門 -Web アプリ編-
Twilio入門 -Web アプリ編-
先取り!PHP 7 と WordPress
先取り!PHP 7 と WordPress
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
Twilio を使えば簡単にできる アプリケーションと電話/SMS連携
How to learn Laravel5 application from Authentication
How to learn Laravel5 application from Authentication
PHPコードではなく PHPコードの「書き方」を知る
PHPコードではなく PHPコードの「書き方」を知る
VagrantユーザのためのDocker入門
VagrantユーザのためのDocker入門
キャラ立ちしたエンジニアになる!
キャラ立ちしたエンジニアになる!
Composer 再入門
Composer 再入門
いまどきのPHP
いまどきのPHP
PHP 5.5 Zend OPcache
PHP 5.5 Zend OPcache
サーバの防災訓練
サーバの防災訓練
Kansai PHP Users Group 2012年活動報告
Kansai PHP Users Group 2012年活動報告
10分で分かる最近のCakePHP
10分で分かる最近のCakePHP
認証機能で学ぶ Laravel 5 アプリケーション
1.
@shin1x1 2015/04/20 21th Kansai
PHP Study 認証機能に学ぶ Laravel 5 アプリケーション
2.
デフォルト認証機能
3.
Authentication (c) 2015 Masashi
Shinbara @shin1x1 • デフォルトプロジェクトに含まれている • php artisan migrateすれば、すぐに使える • 実際に見てみよう
4.
ユーザ登録 (c) 2015 Masashi
Shinbara @shin1x1
5.
ログイン (c) 2015 Masashi
Shinbara @shin1x1
6.
パスワードリセット (c) 2015 Masashi
Shinbara @shin1x1
7.
こんな機能も (c) 2015 Masashi
Shinbara @shin1x1 • Cookieトークンによる自動ログイン (Remeber me) • Basic認証(要実装) • ソーシャル認証(要実装 / Twitter等)
8.
認証機能に見る アプリケーション実装例
9.
Flow (c) 2015 Masashi
Shinbara @shin1x1
10.
Routing (c) 2015 Masashi
Shinbara @shin1x1
11.
Routing Route::controllers([ 'auth' => 'AuthAuthController', 'password'
=> 'AuthPasswordController', ]); /auth, /password へのルーティング コントローラのメソッドへ連結
12.
Controller Method (c) 2015
Masashi Shinbara @shin1x1 • HTTPメソッド + パス • GET /auth/register => getRegister() • POST /auth/register => postRegister()
13.
Routing - auth (c)
2015 Masashi Shinbara @shin1x1 Method URI Action GET¦HEAD /auth/register AuthController@getRegister POST /auth/register AuthController@postRegister GET¦HEAD /auth/login AuthController@getLogin POST /auth/login AuthController@postLogin GET¦HEAD /auth/logout AuthController@getLogout
14.
Routing - password (c)
2015 Masashi Shinbara @shin1x1 Method URI Action GET¦HEAD /password/email PasswordController@getEmail POST /password/email PasswordController@postEmail GET¦HEAD /password/reset PasswordController@getReset POST /password/reset PasswordController@postReset
15.
Controller (c) 2015 Masashi
Shinbara @shin1x1
16.
Controller (c) 2015 Masashi
Shinbara @shin1x1 • AuthControllerとPasswordController • コンストラクタのみで、実処理はトレイトに実装 • 独自コントローラにもトレイトを再利用できる
17.
Controller <?php namespace AppHttpControllersAuth; //
(snip) class AuthController extends Controller { use AuthenticatesAndRegistersUsers; public function __construct(Guard $auth, Registrar $registrar) { $this->auth = $auth; $this->registrar = $registrar; $this->middleware('guest', ['except' => 'getLogout']); } } コンストラクタインジェクション
18.
Controller <?php namespace AppHttpControllersAuth; //
(snip) class AuthController extends Controller { use AuthenticatesAndRegistersUsers; public function __construct(Guard $auth, Registrar $registrar) { $this->auth = $auth; $this->registrar = $registrar; $this->middleware('guest', ['except' => 'getLogout']); } } ミドルウェア(ログイン済みなら、リダイレクト)
19.
Controller <?php namespace AppHttpControllersAuth; //
(snip) class AuthController extends Controller { use AuthenticatesAndRegistersUsers; public function __construct(Guard $auth, Registrar $registrar) { $this->auth = $auth; $this->registrar = $registrar; $this->middleware('guest', ['except' => 'getLogout']); } } トレイト
20.
Constructor Injection (c) 2015
Masashi Shinbara @shin1x1 • コンストラクタでタイプヒンティングで指定 • IoC コンテナから、インスタンスを注入 • インスタンスが無ければ、フレームワークが生成
21.
Constructor Injection public function
__construct(Guard $auth, Registrar $registrar) { $this->auth = $auth; $this->registrar = $registrar; $this->middleware('guest', ['except' => 'getLogout']); } $auth = Guard クラスのインスタンス $registar = Registarクラスのインスタンス
22.
Middleware (c) 2015 Masashi
Shinbara @shin1x1 • Decoratorパターン • 適用ミドルウェアをAppHttpKernelで定義 • ミドルウェアは、次のミドルウェアを呼ぶ • 一つの処理を行うミドルウェアを重ねていく
23.
Middleware public function handle($request,
Closure $next) { if ($this->auth->check()) { return new RedirectResponse(url('/home')); } return $next($request); } ログイン済みなら、/homeへリダイレクト そうで無ければ、次のミドルウェアを呼ぶ
24.
Middleware Chain CheckForMaintenanceMode EncryptCookies AddQueuedCookiesToResponse StartSession ShareErrorsForSession RedirectIfAuthenticate Controller method
25.
ミドルウェアチェイン メンテナンスモード切り替え クッキーの複合、暗号 クッキーをレスポンスヘッダにセット セッション開始、後処理 エラー情報をビューにセット ログイン済みならリダイレクト Controller method
26.
Trait (c) 2015 Masashi
Shinbara @shin1x1 • AuthControllerとPasswordController • コンストラクタのみで、実処理はトレイトに実装 • 独自コントローラにもトレイトを再利用できる
27.
Trait public function getRegister() { return
view('auth.register'); } public function postRegister(Request $request) { $validator = $this->registrar->validator($request->all()); if ($validator->fails()) { $this->throwValidationException( $request, $validator ); } $this->auth->login($this->registrar->create($request->all())); return redirect($this->redirectPath()); } method
28.
Trait public function getRegister() { return
view('auth.register'); } public function postRegister(Request $request) { $validator = $this->registrar->validator($request->all()); if ($validator->fails()) { $this->throwValidationException( $request, $validator ); } $this->auth->login($this->registrar->create($request->all())); return redirect($this->redirectPath()); } method injection
29.
Service (c) 2015 Masashi
Shinbara @shin1x1
30.
Service (c) 2015 Masashi
Shinbara @shin1x1 • コントローラから起動 (コントローラ以外からの呼び出しも可) • ビジネスロジックを実装 • 永続化などは、Eloquent(モデル)に移譲 • GuardクラスとRegistrarクラス
31.
Service - Registrar class
Registrar implements RegistrarContract { public function validator(array $data) { return Validator::make($data, [ 'name' => 'required|max:255', 'email' => 'required|email|max:255|unique:users', 'password' => 'required|confirmed|min:6', ]); } public function create(array $data) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), ]); } } validator builder
32.
Service - Registrar class
Registrar implements RegistrarContract { public function validator(array $data) { return Validator::make($data, [ 'name' => 'required|max:255', 'email' => 'required|email|max:255|unique:users', 'password' => 'required|confirmed|min:6', ]); } public function create(array $data) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => bcrypt($data['password']), ]); } } business logic
33.
Controller(with Trait) public function
postRegister(Request $request) { $validator = $this->registrar->validator($request->all()); if ($validator->fails()) { $this->throwValidationException( $request, $validator ); } $this->auth->login($this->registrar->create($request->all())); return redirect($this->redirectPath()); } call service call servicecall service
34.
Model(Eloquent) (c) 2015 Masashi
Shinbara @shin1x1
35.
Model(Eloquent) (c) 2015 Masashi
Shinbara @shin1x1 • Contracts(インターフェース)を実装 • プロパティ定義のみ • 実処理は、トレイトに実装
36.
Model(Eloquent) class User extends
Model implements AuthenticatableContract, CanResetPasswordContract { use Authenticatable, CanResetPassword; protected $table = 'users'; protected $fillable = ['name', 'email', 'password']; protected $hidden = ['password', 'remember_token']; } Contract(interface) Trait
37.
まとめ
38.
まとめ (c) 2015 Masashi
Shinbara @shin1x1 • 認証実装は、良いサンプル実装 • 役割を分け、シンプルな実装を • こうしないといけないわけじゃない • Laravelの実装で、アーキテクチャを学ぶ
39.
@shin1x1 (c) 2015 Masashi
Shinbara @shin1x1