Suche senden
Hochladen
Laravelの認証について
•
4 gefällt mir
•
7,563 views
Takeo Noda
Folgen
Laravelの認証について紹介。
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 28
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
Amazon Web Services Japan
AWS CLIでAssumeRole
AWS CLIでAssumeRole
Tetsunori Nishizawa
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計
Kouji YAMADA
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
NTT DATA Technology & Innovation
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
Empfohlen
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
Amazon Web Services Japan
AWS CLIでAssumeRole
AWS CLIでAssumeRole
Tetsunori Nishizawa
クラウド環境下におけるAPIリトライ設計
クラウド環境下におけるAPIリトライ設計
Kouji YAMADA
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
Managed Service Provider(MSP)によるマルチOrganizations管理の裏側(Security JAWS 第24回 発表資料)
NTT DATA Technology & Innovation
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
Hiroshi Tokumaru
Dockerイメージ管理の内部構造
Dockerイメージ管理の内部構造
Etsuji Nakai
負荷試験ツールlocustを使おう
負荷試験ツールlocustを使おう
iRidge, Inc.
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito
Amazon Web Services Japan
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本
Amazon Web Services Japan
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用
Yuta Imai
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
kube-system落としてみました
kube-system落としてみました
Shuntaro Saiba
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
Amazon Web Services Japan
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
Shohei Okada
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
崇之 清水
nginx入門
nginx入門
Takashi Takizawa
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
Amazon Web Services Japan
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログイン
Masashi Shinbara
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Weitere ähnliche Inhalte
Was ist angesagt?
負荷試験ツールlocustを使おう
負荷試験ツールlocustを使おう
iRidge, Inc.
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito
Amazon Web Services Japan
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本
Amazon Web Services Japan
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用
Yuta Imai
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
Akihiro Kuwano
kube-system落としてみました
kube-system落としてみました
Shuntaro Saiba
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
Amazon Web Services Japan
Docker Tokyo
Docker Tokyo
cyberblack28 Ichikawa
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
Shohei Okada
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
Masahito Zembutsu
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
崇之 清水
nginx入門
nginx入門
Takashi Takizawa
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
Amazon Web Services Japan
Was ist angesagt?
(20)
負荷試験ツールlocustを使おう
負荷試験ツールlocustを使おう
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
20200630 AWS Black Belt Online Seminar Amazon Cognito
20200630 AWS Black Belt Online Seminar Amazon Cognito
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
20210526 AWS Expert Online マルチアカウント管理の基本
20210526 AWS Expert Online マルチアカウント管理の基本
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
CloudFront経由でのCORS利用
CloudFront経由でのCORS利用
AWSのログ管理ベストプラクティス
AWSのログ管理ベストプラクティス
kube-system落としてみました
kube-system落としてみました
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
AWS Black Belt Tech Webinar 2016 〜 Amazon CloudSearch & Amazon Elasticsearch ...
Docker Tokyo
Docker Tokyo
Laravel の paginate は一体何をやっているのか
Laravel の paginate は一体何をやっているのか
Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
AWS Elastic Beanstalk(初心者向け 超速マスター編)JAWSUG大阪
nginx入門
nginx入門
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
20190129 AWS Black Belt Online Seminar AWS Identity and Access Management (AW...
Andere mochten auch
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログイン
Masashi Shinbara
今日から始めるLaravel
今日から始めるLaravel
Masaru Matsuo
Laravelとテストについて
Laravelとテストについて
Takeo Noda
Ad(microsoftの方)のOpenId Connect対応
Ad(microsoftの方)のOpenId Connect対応
Naohiro Fujie
ハイブリッド時代のID基盤構成の基礎
ハイブリッド時代のID基盤構成の基礎
Naohiro Fujie
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
infinite_loop
Office365のIdentity管理
Office365のIdentity管理
Naohiro Fujie
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
Nov Matake
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
Masaru Kurahayashi
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Masashi Shinbara
Andere mochten auch
(10)
Laravel ユーザなら知っておくべきAuthオートログイン
Laravel ユーザなら知っておくべきAuthオートログイン
今日から始めるLaravel
今日から始めるLaravel
Laravelとテストについて
Laravelとテストについて
Ad(microsoftの方)のOpenId Connect対応
Ad(microsoftの方)のOpenId Connect対応
ハイブリッド時代のID基盤構成の基礎
ハイブリッド時代のID基盤構成の基礎
Laravel 5.1 LTSでサービスを作る
Laravel 5.1 LTSでサービスを作る
Office365のIdentity管理
Office365のIdentity管理
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
OpenID Connect 入門 〜コンシューマーにおけるID連携のトレンド〜
認証機能で学ぶ Laravel 5 アプリケーション
認証機能で学ぶ Laravel 5 アプリケーション
Ähnlich wie Laravelの認証について
FuelPHPでSentry導入
FuelPHPでSentry導入
fagai
Using Dancer
Using Dancer
Yoshihiro Sasaki
Rails and twitter #twtr_hack
Rails and twitter #twtr_hack
i7a
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
junichi anno
Struts2を始めよう!
Struts2を始めよう!
Shinpei Ohtani
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
さくらインターネット株式会社
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
Tomohiro Ichimura
俺の俺による俺のための App Service Environment
俺の俺による俺のための App Service Environment
Sunao Tomita
Ruby開発者のためのHeroku入門
Ruby開発者のためのHeroku入門
Salesforce Developers Japan
勉強会force#2 HTML5によるモバイルアプリ開発
勉強会force#2 HTML5によるモバイルアプリ開発
Kazuki Nakajima
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
schoowebcampus
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
Amazon Web Services Japan
初めてのPadrino
初めてのPadrino
Takeshi Yabe
PHP実践 ~外部APIを使って情報を取得する~
PHP実践 ~外部APIを使って情報を取得する~
schoowebcampus
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
hiro345
Azure Policyでハイブリッドな構成管理
Azure Policyでハイブリッドな構成管理
Masahiko Ebisuda
AWS Black Belt Online Seminar AWS Amplify
AWS Black Belt Online Seminar AWS Amplify
Amazon Web Services Japan
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
Hideki Saito
Word press on conoha このべん #3
Word press on conoha このべん #3
Wataru OKAMOTO
Keycloak開発入門
Keycloak開発入門
Yuichi Nakamura
Ähnlich wie Laravelの認証について
(20)
FuelPHPでSentry導入
FuelPHPでSentry導入
Using Dancer
Using Dancer
Rails and twitter #twtr_hack
Rails and twitter #twtr_hack
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
Struts2を始めよう!
Struts2を始めよう!
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
「さくらのクラウド」スタートアップスクリプトを作ってみよう! - concrete5を題材に -(オープンソースカンファレンス2014 Shimane)
APIMeetup 20170329_ichimura
APIMeetup 20170329_ichimura
俺の俺による俺のための App Service Environment
俺の俺による俺のための App Service Environment
Ruby開発者のためのHeroku入門
Ruby開発者のためのHeroku入門
勉強会force#2 HTML5によるモバイルアプリ開発
勉強会force#2 HTML5によるモバイルアプリ開発
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
[CTO Night & Day 2019] AWS Amplify で Web/Mobile 爆速スケーラブル Serverless 開発 #ctonight
初めてのPadrino
初めてのPadrino
PHP実践 ~外部APIを使って情報を取得する~
PHP実践 ~外部APIを使って情報を取得する~
15分でCakePHPを始める方法(Nseg 2013-11-09 )
15分でCakePHPを始める方法(Nseg 2013-11-09 )
Azure Policyでハイブリッドな構成管理
Azure Policyでハイブリッドな構成管理
AWS Black Belt Online Seminar AWS Amplify
AWS Black Belt Online Seminar AWS Amplify
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
Word press on conoha このべん #3
Word press on conoha このべん #3
Keycloak開発入門
Keycloak開発入門
Mehr von Takeo Noda
スタートアップにやさしいAWS
スタートアップにやさしいAWS
Takeo Noda
Vue入門
Vue入門
Takeo Noda
Prometeusについてはじめてみよう / Let's start Prometeus
Prometeusについてはじめてみよう / Let's start Prometeus
Takeo Noda
ディレクションのすゝめ
ディレクションのすゝめ
Takeo Noda
負荷テスト入門
負荷テスト入門
Takeo Noda
データ解析入門
データ解析入門
Takeo Noda
Zabbixで学ぶ統計解析入門
Zabbixで学ぶ統計解析入門
Takeo Noda
Zabbix入門
Zabbix入門
Takeo Noda
映像・音響機材入門
映像・音響機材入門
Takeo Noda
サイト運用者に向けたバージョン管理について
サイト運用者に向けたバージョン管理について
Takeo Noda
Laravel5を使って開発してみた
Laravel5を使って開発してみた
Takeo Noda
Mehr von Takeo Noda
(11)
スタートアップにやさしいAWS
スタートアップにやさしいAWS
Vue入門
Vue入門
Prometeusについてはじめてみよう / Let's start Prometeus
Prometeusについてはじめてみよう / Let's start Prometeus
ディレクションのすゝめ
ディレクションのすゝめ
負荷テスト入門
負荷テスト入門
データ解析入門
データ解析入門
Zabbixで学ぶ統計解析入門
Zabbixで学ぶ統計解析入門
Zabbix入門
Zabbix入門
映像・音響機材入門
映像・音響機材入門
サイト運用者に向けたバージョン管理について
サイト運用者に向けたバージョン管理について
Laravel5を使って開発してみた
Laravel5を使って開発してみた
Laravelの認証について
1.
Copyright © Xchange
Solutions All right reserved. Fukuoka.php Vol.19 Laravelの認証について 株式会社エクスチェンジ ソリューションズ 野田 健夫 2016.10.20
2.
2 Copyright © Xchange
Solutions All right reserved. こんにちは! 株式会社エクスチェンジ ソリューションズ 野田 健夫(のだたけお) https://twitter.com/nodatakeo https://www.facebook.com/nodatakeo
3.
3 Copyright © Xchange
Solutions All right reserved. 認証ページ 認証ページを作る目的。 ユーザー識別 アクセス制限、権限制御 ユーザーごとのサービスカスタマイズ Webサービスの実装において定番機能。 毎度、実装していると思います。
4.
4 Copyright © Xchange
Solutions All right reserved. Laravelにおける認証の仕組み 認証は、middlewareを使って実現。 middlewareは、StackPHPというライブラリをベース にしている。 http://stackphp.com/より引用 Symfonyの HttpKernelInterfaceを使う前提はあるが、フレームワーク に依存しない汎用性の高いミドルウェアを作ることができる。 Appがコアとなる処理 Session/Authがミドルウェア部分
5.
5 Copyright © Xchange
Solutions All right reserved. 認証を処理するmiddlewareの仕組み Pipeline Design Pattern による実装 send() then() through() TASK1 TASK2 TASK3 …. (new Pipeline($this->app)) ->send($request) ->through($this->middleware) ->then($this->dispatchToRouter()); ※Illuminate¥Foundation¥Http¥Kernelより一部省略して引用。 ※Pipelineをarray_reduceを使って関数型の書き方で実装。 ← 各タスクに流すリクエスト情報 ← middlewareの配列 ← 最終的にControllerのメソッドへ Pipelineに処理を見立てる
6.
6 Copyright © Xchange
Solutions All right reserved. Laravelで認証ページを作る方法 1. ひな形(scaffold)を使う 2. 自分で実装する 3. その他 1. BASIC認証 2. OAuth認証(クライアント)
7.
7 Copyright © Xchange
Solutions All right reserved. ひな形(scaffold)を使ってみよう laravel new (プロジェクト名) cd (プロジェクト名) chmod 777 -R storage/ ※.env ファイルのDB設定、メールサーバー設定を調整 php artisan make:auth php artisan migrate プロジェクトを作成 認証のひな形を作成
8.
8 Copyright © Xchange
Solutions All right reserved. ひな形のルーティング情報 +--------+----------+------------------------+-------+------------------------------------------------------------------------+--------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+------------------------+-------+------------------------------------------------------------------------+--------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api,auth:api | | | GET|HEAD | home | | App¥Http¥Controllers¥HomeController@index | web,auth | | | GET|HEAD | login | login | App¥Http¥Controllers¥Auth¥LoginController@showLoginForm | web,guest | | | POST | login | | App¥Http¥Controllers¥Auth¥LoginController@login | web,guest | | | POST | logout | | App¥Http¥Controllers¥Auth¥LoginController@logout | web | | | POST | password/email | | App¥Http¥Controllers¥Auth¥ForgotPasswordController@sendResetLinkEmail | web,guest | | | GET|HEAD | password/reset | | App¥Http¥Controllers¥Auth¥ForgotPasswordController@showLinkRequestForm | web,guest | | | POST | password/reset | | App¥Http¥Controllers¥Auth¥ResetPasswordController@reset | web,guest | | | GET|HEAD | password/reset/{token} | | App¥Http¥Controllers¥Auth¥ResetPasswordController@showResetForm | web,guest | | | GET|HEAD | register | | App¥Http¥Controllers¥Auth¥RegisterController@showRegistrationForm | web,guest | | | POST | register | | App¥Http¥Controllers¥Auth¥RegisterController@register | web,guest | +--------+----------+------------------------+-------+------------------------------------------------------------------------+--------------+ ルーティング情報をチェック php artisan route:list ※赤枠が追加された認証のひな形部分
9.
9 Copyright © Xchange
Solutions All right reserved. 認証ページの種類 登録ページ(/register) ログインページ(/login) パスワードリセットページ(/password/reset) ホーム(/home) ログアウト(/logout) ログイン認証前に 使うページ ログイン認証後に 使うページ
10.
10 Copyright © Xchange
Solutions All right reserved. ひな形のルーティング情報:認証前 +--------+----------+------------------------+-------+------------------------------------------------------------------------+--------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+------------------------+-------+------------------------------------------------------------------------+--------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api,auth:api | | | GET|HEAD | home | | App¥Http¥Controllers¥HomeController@index | web,auth | | | GET|HEAD | login | login | App¥Http¥Controllers¥Auth¥LoginController@showLoginForm | web,guest | | | POST | login | | App¥Http¥Controllers¥Auth¥LoginController@login | web,guest | | | POST | logout | | App¥Http¥Controllers¥Auth¥LoginController@logout | web | | | POST | password/email | | App¥Http¥Controllers¥Auth¥ForgotPasswordController@sendResetLinkEmail | web,guest | | | GET|HEAD | password/reset | | App¥Http¥Controllers¥Auth¥ForgotPasswordController@showLinkRequestForm | web,guest | | | POST | password/reset | | App¥Http¥Controllers¥Auth¥ResetPasswordController@reset | web,guest | | | GET|HEAD | password/reset/{token} | | App¥Http¥Controllers¥Auth¥ResetPasswordController@showResetForm | web,guest | | | GET|HEAD | register | | App¥Http¥Controllers¥Auth¥RegisterController@showRegistrationForm | web,guest | | | POST | register | | App¥Http¥Controllers¥Auth¥RegisterController@register | web,guest | +--------+----------+------------------------+-------+------------------------------------------------------------------------+--------------+ HTTPメソッド名 URI情報 Action情報 (Controller層) Middleware情報 (Filter層) 認証前に使うページに指定されているmiddleware web, guest
11.
11 Copyright © Xchange
Solutions All right reserved. 認証の仕組み(認証前) Controller層 Filter層 リクエスト レスポンス 認証情報があれば、/home にリダイレクトするmiddleware セッション情報を取り扱う middlewareグループ ※middlewareは、App¥Http¥Kernelにて定義 web guest
12.
12 Copyright © Xchange
Solutions All right reserved. ひな形のルーティング情報:認証後 +--------+----------+------------------------+-------+------------------------------------------------------------------------+--------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+------------------------+-------+------------------------------------------------------------------------+--------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api,auth:api | | | GET|HEAD | home | | App¥Http¥Controllers¥HomeController@index | web,auth | | | GET|HEAD | login | login | App¥Http¥Controllers¥Auth¥LoginController@showLoginForm | web,guest | | | POST | login | | App¥Http¥Controllers¥Auth¥LoginController@login | web,guest | | | POST | logout | | App¥Http¥Controllers¥Auth¥LoginController@logout | web | | | POST | password/email | | App¥Http¥Controllers¥Auth¥ForgotPasswordController@sendResetLinkEmail | web,guest | | | GET|HEAD | password/reset | | App¥Http¥Controllers¥Auth¥ForgotPasswordController@showLinkRequestForm | web,guest | | | POST | password/reset | | App¥Http¥Controllers¥Auth¥ResetPasswordController@reset | web,guest | | | GET|HEAD | password/reset/{token} | | App¥Http¥Controllers¥Auth¥ResetPasswordController@showResetForm | web,guest | | | GET|HEAD | register | | App¥Http¥Controllers¥Auth¥RegisterController@showRegistrationForm | web,guest | | | POST | register | | App¥Http¥Controllers¥Auth¥RegisterController@register | web,guest | +--------+----------+------------------------+-------+------------------------------------------------------------------------+--------------+ HTTPメソッド名 URI情報 Action情報 (Controller層) Middleware情報 (Filter層) 認証後に使うページに指定されているmiddleware web, auth
13.
13 Copyright © Xchange
Solutions All right reserved. 認証の仕組み(認証後) Controller層 Filter層 リクエスト レスポンス 認証情報がなければ、 AuthenticationExceptionを 投げるmiddleware その後、App¥Exceptions¥Handler.php でルーティング名 ‘login’へリダイレクト セッション情報を取り扱う middlewareグループ ※middlewareは、App¥Http¥Kernelにて定義 web auth
14.
14 Copyright © Xchange
Solutions All right reserved. 補足:ルーティング名とは? +--------+----------+------------------------+-------+------------------------------------------------------------------------+--------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+------------------------+-------+------------------------------------------------------------------------+--------------+ | | GET|HEAD | / | | Closure | web | | | GET|HEAD | api/user | | Closure | api,auth:api | | | GET|HEAD | home | | App¥Http¥Controllers¥HomeController@index | web,auth | | | GET|HEAD | login | login | App¥Http¥Controllers¥Auth¥LoginController@showLoginForm | web,guest | | | POST | login | | App¥Http¥Controllers¥Auth¥LoginController@login | web,guest | | | POST | logout | | App¥Http¥Controllers¥Auth¥LoginController@logout | web | | | POST | password/email | | App¥Http¥Controllers¥Auth¥ForgotPasswordController@sendResetLinkEmail | web,guest | | | GET|HEAD | password/reset | | App¥Http¥Controllers¥Auth¥ForgotPasswordController@showLinkRequestForm | web,guest | | | POST | password/reset | | App¥Http¥Controllers¥Auth¥ResetPasswordController@reset | web,guest | | | GET|HEAD | password/reset/{token} | | App¥Http¥Controllers¥Auth¥ResetPasswordController@showResetForm | web,guest | | | GET|HEAD | register | | App¥Http¥Controllers¥Auth¥RegisterController@showRegistrationForm | web,guest | | | POST | register | | App¥Http¥Controllers¥Auth¥RegisterController@register | web,guest | +--------+----------+------------------------+-------+------------------------------------------------------------------------+--------------+ ルーティング情報をチェック php artisan route:list ルーティング名。 ヘルパー関数 route() を使ってURLを呼び 出せるようになります。 例:route(‘login’)
15.
15 Copyright © Xchange
Solutions All right reserved. 補足: Routing Annotationの場合の指定例 /** * トップページ * @Get(“/", as="top.get") * @Post(“/", as="top.post") * @Get("/index.html", as="top.index.get") * @Post("/index.html", as="top.index.post") * @Middleware({"web", "auth:web"}) * @param Request $request * @return Response * @throws IllegalParameterException */ ルーティング名
16.
16 Copyright © Xchange
Solutions All right reserved. 独自実装する場合① config/auth.phpにGuardとProviderの設定を追加。 /* |----------------------------------------- | Authentication Guards |----------------------------------------- */ // 認証ガード 'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'token', 'provider' => 'users', ], //追加 for admin 'admin' => [ 'driver' => 'session', // セッション認証 'provider' => 'admins', // 対応するプロバイダー ], ], /* |----------------------------------------- | User Providers |----------------------------------------- */ // 認証プロバイダー 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App¥User::class, ], 'admins' => [ 'driver' => 'eloquent', 'model' => App¥Admin::class, ], ], ※driverはeloquent/databaseをサポート ※driverはsession/tokenをサポート Guard(認証種別) Provider(Guardに対応する認証モデル情報)
17.
17 Copyright © Xchange
Solutions All right reserved. 独自実装する場合② 認証インターフェイス Authenticatable Illuminate¥Contracts¥Auth¥Authenticatable I 認証する対象モデルに対してAuthenticatableのインターフェイスを 適用&Authenticatableを実装したトレイトを組み込み Illuminate¥Auth¥Authenticatable as AuthenticableTrait 認証トレイトAuthenticatableTraitT ※モデルの対象となるキー名を設定する。 認証対象としたいモデル
18.
18 Copyright © Xchange
Solutions All right reserved. 独自実装する場合③ Guardに対応するログイン・ログアウトをControllerに実装。 /** * ログイン処理 * @Post("admin_tools/login" , as="admin.login.post") * @return View */ public function postLogin() { // 認証 $credential = [ 'login_id' => Input::get('login_id'), 'password' => Input::get('login_pw'), 'status' => 1, ]; if (Auth::guard('admin')->attempt($credential)) { // ログイン成功 return redirect(route(‘admin.top’)); } // ログイン失敗 $errors->add(‘login_id’, ‘ログインIDまたはパスワードに誤りがあります。’); return view("admin.login", compact('errors')); } /** * ログイン表示 * @Get("admin/login" , as="admin.login.get") * @return View */ public function login() { if (Auth::guard('admin')->check()) { // ログイン済みならメニューへ return redirect(route("admin.top")); } $errors = new MessageBag(); return view("admin.login", compact('errors')); } /** * ログアウト処理+表示 * @Get(“admin_tools/logout” , as=“admin.logout”) * @return View */ public function logout() { if (!Auth::guard('admin')->check()) { Log::debug('Not logined.'); return redirect(route("admin.login.get")); } Auth::guard('admin')->logout(); return view("admin.logout"); } ※guardの種別を指定しない場合、デフォルトのguardが使用される。 ログイン表示 ログイン処理+リダイレクト ログアウト表示
19.
19 Copyright © Xchange
Solutions All right reserved. 独自実装する場合④ auth middleware を拡張 /** * Handle an incoming request. * * @param ¥Illuminate¥Http¥Request $request * @param ¥Closure $next * @param string $guard * @return mixed * * @throws ¥Illuminate¥Auth¥AuthenticationException */ public function handle($request, Closure $next, $guard) { if ($this->auth->guard($guard)->check()) { return $next($request); } // $guard の種類によってログイン表示先を変更 return redirect(route($guard.".login")); } 参考:Illuminate¥Auth¥Middleware¥Authenticate Guardの種類に応じてログ インページをリダイレクト するような場合の実装例
20.
20 Copyright © Xchange
Solutions All right reserved. 独自実装する場合⑤ 認証をかけたいルーティング情報にmiddlewareを設定 * @Middleware({"web", "auth:admin"}) * @Middleware({"web", "auth:web"}) 設定で指定したGuardの種 類をmiddlewareの引数に指 定する。 ※上記は Routing Annotationで指定した例
21.
21 Copyright © Xchange
Solutions All right reserved. 認証の基本は、auth middleware Controller層 Filter層 リクエスト レスポンス 認証情報がなければ、対応するGuard に基づくログインページへリダイレク トするmiddleware。 セッション情報を取り扱う middlewareグループ ※middlewareは、App¥Http¥Kernelにて定義 web auth:(Guard種別)
22.
22 Copyright © Xchange
Solutions All right reserved. その他:BASIC認証のmiddleware Controller層 Filter層 リクエスト レスポンス BASIC認証を行うMiddleware ※middlewareは、App¥Http¥Kernelにて定義 auth.basic 対象となるURIのmiddlewareに指定。
23.
23 Copyright © Xchange
Solutions All right reserved. その他:OAuth client+Auth middleware composer require laravel/socialite インストール方法 config/app.phpに以下を追加 設定方法 'providers' => [ : // Other service providers... Laravel¥Socialite¥SocialiteServiceProvider::class, ], 'aliases' => [ : // Additional aliases 'Socialite' => Laravel¥Socialite¥Facades¥Socialite::class, ],
24.
24 Copyright © Xchange
Solutions All right reserved. その他:OAuth client+Auth middleware config/services.phpに以下を追加。.envにも対応する値を設定。 設定方法 'facebook' => [ 'client_id' => env('FACEBOOK_ID'), 'client_secret' => env('FACEBOOK_SECRET'), 'redirect' => env('FACEBOOK_CALLBACK_URL'), ],
25.
25 Copyright © Xchange
Solutions All right reserved. その他:OAuth client+Auth middleware OAuthクライアント OAuthサーバー redirect ログインページ client_id redirect_uri scope state ログインOKならば コールバック callback code (認可コード) state ① ② ③④ callback の中でユーザー情報を取得 し、会員登録・ログイン処理を行う。 redirectでOAuthサーバーへリダイ レクト
26.
26 Copyright © Xchange
Solutions All right reserved. その他:OAuth client+Auth middleware /** * OAuthサーバーへのリダイレクト * @Get(“facebook/redirect”, as=“facebook.redirect”) * @return response */ public function redirectToProvider() { return Socialite::driver('facebook')->redirect(); } /** * OAuthサーバーからのコールバック * @Get(“facebook/callback”, as=“facebook.callback”) * @return response */ public function handleProviderCallback(SocialAccountService $service) { // Oauthサーバーからユーザー情報の取得 $socialUser = Socialite::driver('facebook')->user(); // ユーザー情報の登録 $user = User::firstOrCreate([ ‘nickname’ => $socialUser->nickname, ‘email’ => $socialUser->email, ‘token’ => $socialUser->token, ‘refresh_token’ => $socialUser->refreshToken, ‘expires_in’ => $socialUser->expiresIn, ]); // ログイン状態とする Auth::guard(‘web’)->login($user); // リダイレクト return redirect()->to('/home'); } OAuthServerへのリダイレクト(Pg22①) OAuthServerからのコールバック(Pg22④) Controllerの実装例 Socialite::driver(Oauthサーバー種別)->user(); 以下が実行される。 (1) 認可コードよりアクセストークン取得 (2) アクセストークンを使ってユーザー情報 取得
27.
27 Copyright © Xchange
Solutions All right reserved. よくあるハマりどころ “web“middlewareグループの指定漏れ →Sessionを使って認証情報を保持しているため、認証状態を チェックする必要のあるURIにおいては、必ず指定する必要が あります。 remember_tokenがないというエラーがでる。 →remember_tokenを無効化する対応を別途追加する必要があ ります。 ※http://laravel.io/forum/05-21-2014-how-to-disable-remember-token
28.
28 Copyright © Xchange
Solutions All right reserved. まとめ Laravelの認証機構は、auth middlewareが基本。 OAuth認証やBASIC認証とも組み合わせることができる。 複数の認証方式(Multi-Auth)にも対応。 ひな形やTraitなど参考になるソースも多く、カスタマイズ がやりやすい。 Let’s use Laravel!
Jetzt herunterladen