Submit Search
Upload
使用者認證
•
6 likes
•
29,771 views
Shengyou Fan
Follow
在 2015 年 7 月至新北市樹林國小舉辦 Laravel 工作坊,讓參與的學員在 30 個小時內學會使用 Laravel 建置一個具 Open ID 認證功能的網路應用程式。
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 49
Download now
Download to read offline
Recommended
使用 Controller
使用 Controller
Shengyou Fan
Eloquent ORM
Eloquent ORM
Shengyou Fan
PHP 語法基礎與物件導向
PHP 語法基礎與物件導向
Shengyou Fan
Route 路由控制
Route 路由控制
Shengyou Fan
From Generator to Fiber the Road to Coroutine in PHP
From Generator to Fiber the Road to Coroutine in PHP
Albert Chen
[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南
Shengyou Fan
PHPCon China 2016 - 從學徒變大師:談 Laravel 框架擴充與套件開發
PHPCon China 2016 - 從學徒變大師:談 Laravel 框架擴充與套件開發
Shengyou Fan
Composer 從入門到實戰
Composer 從入門到實戰
Shengyou Fan
Recommended
使用 Controller
使用 Controller
Shengyou Fan
Eloquent ORM
Eloquent ORM
Shengyou Fan
PHP 語法基礎與物件導向
PHP 語法基礎與物件導向
Shengyou Fan
Route 路由控制
Route 路由控制
Shengyou Fan
From Generator to Fiber the Road to Coroutine in PHP
From Generator to Fiber the Road to Coroutine in PHP
Albert Chen
[PHP 也有 Day #64] PHP 升級指南
[PHP 也有 Day #64] PHP 升級指南
Shengyou Fan
PHPCon China 2016 - 從學徒變大師:談 Laravel 框架擴充與套件開發
PHPCon China 2016 - 從學徒變大師:談 Laravel 框架擴充與套件開發
Shengyou Fan
Composer 從入門到實戰
Composer 從入門到實戰
Shengyou Fan
Proxmox Clustering with CEPH
Proxmox Clustering with CEPH
FahadIbrar5
Deeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay Networks
Docker, Inc.
Functional Programming by Examples using Haskell
Functional Programming by Examples using Haskell
goncharenko
Building Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integration
Fredrik Öhrström
Odoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best Practices
Odoo
Laravel Presentation
Laravel Presentation
REZAUL KARIM REFATH
Linux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみよう
Tsuyoshi OZAWA
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)
Cyril Wang
Deploying & Scaling your Odoo Server
Deploying & Scaling your Odoo Server
Odoo
Tools for Solving Performance Issues
Tools for Solving Performance Issues
Odoo
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
do_aki
Intro to Linux Shell Scripting
Intro to Linux Shell Scripting
vceder
Linux Performance Profiling and Monitoring
Linux Performance Profiling and Monitoring
Georg Schönberger
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
vivekkonnect
Tips on how to improve the performance of your custom modules for high volume...
Tips on how to improve the performance of your custom modules for high volume...
Odoo
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
Ian Choi
[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka
[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka
NHN FORWARD
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
Shengyou Fan
[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode
Akihiro Suda
Best Practices in Handling Performance Issues
Best Practices in Handling Performance Issues
Odoo
驗證與訊息
驗證與訊息
Shengyou Fan
整合 Open ID
整合 Open ID
Shengyou Fan
More Related Content
What's hot
Proxmox Clustering with CEPH
Proxmox Clustering with CEPH
FahadIbrar5
Deeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay Networks
Docker, Inc.
Functional Programming by Examples using Haskell
Functional Programming by Examples using Haskell
goncharenko
Building Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integration
Fredrik Öhrström
Odoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best Practices
Odoo
Laravel Presentation
Laravel Presentation
REZAUL KARIM REFATH
Linux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみよう
Tsuyoshi OZAWA
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)
Cyril Wang
Deploying & Scaling your Odoo Server
Deploying & Scaling your Odoo Server
Odoo
Tools for Solving Performance Issues
Tools for Solving Performance Issues
Odoo
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
do_aki
Intro to Linux Shell Scripting
Intro to Linux Shell Scripting
vceder
Linux Performance Profiling and Monitoring
Linux Performance Profiling and Monitoring
Georg Schönberger
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
vivekkonnect
Tips on how to improve the performance of your custom modules for high volume...
Tips on how to improve the performance of your custom modules for high volume...
Odoo
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
Ian Choi
[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka
[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka
NHN FORWARD
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
Shengyou Fan
[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode
Akihiro Suda
Best Practices in Handling Performance Issues
Best Practices in Handling Performance Issues
Odoo
What's hot
(20)
Proxmox Clustering with CEPH
Proxmox Clustering with CEPH
Deeper Dive in Docker Overlay Networks
Deeper Dive in Docker Overlay Networks
Functional Programming by Examples using Haskell
Functional Programming by Examples using Haskell
Building Large Java Projects Faster: Multicore javac and Makefile integration
Building Large Java Projects Faster: Multicore javac and Makefile integration
Odoo's Test Framework - Learn Best Practices
Odoo's Test Framework - Learn Best Practices
Laravel Presentation
Laravel Presentation
Linux KVM のコードを追いかけてみよう
Linux KVM のコードを追いかけてみよう
如何使用 Xhprof 分析網站效能 (真實案例2)
如何使用 Xhprof 分析網站效能 (真實案例2)
Deploying & Scaling your Odoo Server
Deploying & Scaling your Odoo Server
Tools for Solving Performance Issues
Tools for Solving Performance Issues
php and sapi and zendengine2 and...
php and sapi and zendengine2 and...
Intro to Linux Shell Scripting
Intro to Linux Shell Scripting
Linux Performance Profiling and Monitoring
Linux Performance Profiling and Monitoring
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Overview of Distributed Virtual Router (DVR) in Openstack/Neutron
Tips on how to improve the performance of your custom modules for high volume...
Tips on how to improve the performance of your custom modules for high volume...
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka
[2019] 바르게, 빠르게! Reactive를 품은 Spring Kafka
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[COSCUP 2022] 讓黑畫面再次偉大 - 用 PHP 寫 CLI 工具
[DockerCon 2019] Hardening Docker daemon with Rootless mode
[DockerCon 2019] Hardening Docker daemon with Rootless mode
Best Practices in Handling Performance Issues
Best Practices in Handling Performance Issues
Viewers also liked
驗證與訊息
驗證與訊息
Shengyou Fan
整合 Open ID
整合 Open ID
Shengyou Fan
CRUD 綜合運用
CRUD 綜合運用
Shengyou Fan
Migrations 與 Schema 操作
Migrations 與 Schema 操作
Shengyou Fan
Model 設定與 Seeding
Model 設定與 Seeding
Shengyou Fan
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan
工作坊總結
工作坊總結
Shengyou Fan
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
Shengyou Fan
Composer 套件管理
Composer 套件管理
Shengyou Fan
Package 安裝與使用
Package 安裝與使用
Shengyou Fan
開發環境建置
開發環境建置
Shengyou Fan
工作坊簡介
工作坊簡介
Shengyou Fan
Eloquent ORM
Eloquent ORM
Shengyou Fan
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan
Model 設定與 Seeding
Model 設定與 Seeding
Shengyou Fan
Route路由控制
Route路由控制
Shengyou Fan
使用 Eloquent ORM
使用 Eloquent ORM
Shengyou Fan
Package安裝與使用
Package安裝與使用
Shengyou Fan
開發環境建置
開發環境建置
Shengyou Fan
工作坊簡介
工作坊簡介
Shengyou Fan
Viewers also liked
(20)
驗證與訊息
驗證與訊息
整合 Open ID
整合 Open ID
CRUD 綜合運用
CRUD 綜合運用
Migrations 與 Schema 操作
Migrations 與 Schema 操作
Model 設定與 Seeding
Model 設定與 Seeding
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
工作坊總結
工作坊總結
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
Composer 套件管理
Composer 套件管理
Package 安裝與使用
Package 安裝與使用
開發環境建置
開發環境建置
工作坊簡介
工作坊簡介
Eloquent ORM
Eloquent ORM
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Model 設定與 Seeding
Model 設定與 Seeding
Route路由控制
Route路由控制
使用 Eloquent ORM
使用 Eloquent ORM
Package安裝與使用
Package安裝與使用
開發環境建置
開發環境建置
工作坊簡介
工作坊簡介
Similar to 使用者認證
使用者認證
使用者認證
Shengyou Fan
使用 Controller
使用 Controller
Shengyou Fan
驗證與訊息
驗證與訊息
Shengyou Fan
Laradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTH
Szuping Wang
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan
Schema & Migration操作
Schema & Migration操作
Shengyou Fan
Route 機制
Route 機制
Shengyou Fan
Migrations 與 Schema操作
Migrations 與 Schema操作
Shengyou Fan
OpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniter
Hung-yu Lin
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Justin Lin
使用 laravel 的前與後
使用 laravel 的前與後
Shengyou Fan
How to ASP.NET MVC4
How to ASP.NET MVC4
Daniel Chou
開發環境建置
開發環境建置
Shengyou Fan
應用程式佈署
應用程式佈署
Shengyou Fan
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
Shengyou Fan
專案啟動與環境設定
專案啟動與環境設定
Shengyou Fan
Appserv setup
Appserv setup
Ht Wang
Asp.net core v1.0
Asp.net core v1.0
chang kuo-chao
Asp.net core v1.0
Asp.net core v1.0
國昭 張
COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南
Shengyou Fan
Similar to 使用者認證
(20)
使用者認證
使用者認證
使用 Controller
使用 Controller
驗證與訊息
驗證與訊息
Laradebut #7 - Laravel AUTH
Laradebut #7 - Laravel AUTH
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Schema & Migration操作
Schema & Migration操作
Route 機制
Route 機制
Migrations 與 Schema操作
Migrations 與 Schema操作
OpenWebSchool - 11 - CodeIgniter
OpenWebSchool - 11 - CodeIgniter
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
使用 laravel 的前與後
使用 laravel 的前與後
How to ASP.NET MVC4
How to ASP.NET MVC4
開發環境建置
開發環境建置
應用程式佈署
應用程式佈署
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
專案啟動與環境設定
專案啟動與環境設定
Appserv setup
Appserv setup
Asp.net core v1.0
Asp.net core v1.0
Asp.net core v1.0
Asp.net core v1.0
COSCUP 2016 Laravel 部署工作坊 - 部署指南
COSCUP 2016 Laravel 部署工作坊 - 部署指南
More from Shengyou Fan
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
Shengyou Fan
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
Shengyou Fan
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
Shengyou Fan
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
Shengyou Fan
How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023
Shengyou Fan
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
Shengyou Fan
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
Shengyou Fan
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
Shengyou Fan
Using the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your Database
Shengyou Fan
[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園
Shengyou Fan
初探 Kotlin Multiplatform
初探 Kotlin Multiplatform
Shengyou Fan
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
Shengyou Fan
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
Shengyou Fan
Composer 經典食譜
Composer 經典食譜
Shengyou Fan
老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具
Shengyou Fan
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
Shengyou Fan
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
Shengyou Fan
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
Shengyou Fan
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
Shengyou Fan
用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手
Shengyou Fan
More from Shengyou Fan
(20)
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[JCConf 2023] 從 Kotlin Multiplatform 到 Compose Multiplatform:在多平台間輕鬆共用業務邏輯與 U...
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[Kotlin 讀書會第五梯次] 深入淺出 Kotlin 第一章導讀
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
[WebConf Taiwan 2023] 一份 Zend Engine 外帶!透過 Micro 讓一次打包、多處運行變得可能
How I make a podcast website using serverless technology in 2023
How I make a podcast website using serverless technology in 2023
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[Effective Kotlin 讀書會] 第八章 Efficient collection processing 導讀
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[MOPCON 2022] 以 Kotlin Multiplatform 制霸全平台
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
[JCConf 2022] Compose for Desktop - 開發桌面軟體的新選擇
Using the Exposed SQL Framework to Manage Your Database
Using the Exposed SQL Framework to Manage Your Database
[COSCUP 2022] Kotlin Collection 遊樂園
[COSCUP 2022] Kotlin Collection 遊樂園
初探 Kotlin Multiplatform
初探 Kotlin Multiplatform
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
簡化 JVM 上雲 - 透過 Azure Spring Cloud 提升開發、發佈及服務監控效率
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
以 Kotlin Multiplatform Mobile (KMM) 開發跨平台行動應用
Composer 經典食譜
Composer 經典食譜
老派浪漫:用 Kotlin 寫 Command Line 工具
老派浪漫:用 Kotlin 寫 Command Line 工具
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 4 - 實作 RSS Aggregator
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 3 - 實作 JSON API
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 2 - 簡介 Kotlin Serverless
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
[Kotlin Serverless 工作坊] 單元 1 - 開發環境建置
用 Kotlin 打造讀書會小幫手
用 Kotlin 打造讀書會小幫手
使用者認證
1.
使⽤用者認證 范聖佑 Shengyou Fan 新北市樹林國⼩小
(2015/07/11) 適 ⽤用 5.1 版
2.
單元主題 • 了解使⽤用者認證機制的基本元素 • 介紹
Laravel 內建的使⽤用者認證機制 • 如何在專案內整合 Laravel 內建的使⽤用者認證機制 • ⽰示範實作專案使⽤用者認證功能
3.
認證機制
4.
使⽤用者認證 • 網路應⽤用程式的使⽤用者認證機制,⼀一般來說⾄至少會 有以下幾個功能: - 使⽤用者註冊 -
使⽤用者登⼊入 - 使⽤用者登出 - 忘記密碼 (寄出密碼重設信) - 重設密碼
5.
Laravel 的認證機制 • Laravel
預設就提供了完整的使⽤用者認證機制,上述 列出的 5 ⼤大功能皆已內建,得來全不費功夫! • 在 5.0 版預設就將使⽤用者認證機制安裝好,若要移除 的話,需要⽤用 artisan fresh 指令將其移除 • ⽽而在 5.1 版裡,則是只提供核⼼心程式 (Middleware、 Trait)、Model 及 Controller 的實作,⾄至於 Route、 View 等則需要⼿手動撰寫 • 簡單來說,在 5.1 版只要將 Route 對應⾄至 Laravel 提 供的 Auth 系列 Controller,並將View 補⿑齊,就可以 使⽤用內建的認證機制
6.
Laravel 認證相關的檔案 • 關於認證相關的設定檔放在
config/auth.php 內 • 預設好的 User Model 放在 app/ 底下 • 預設好有兩個 migration 放在 database/migrations 內, 會幫我們建⽴立 users 及 password_resets 兩個資 料表 • 預設有兩個 Controller 放在 app/Http/Controllers/ Auth 底下:AuthController 及 PasswordController
7.
使⽤用者註冊 ★ 參考⽂文件:http://laravel.com/docs/5.1/authentication#authentication-quickstart
8.
先建⽴立 user 資料表 •
Laravel 5.1 版有內建使⽤用者認證的 migration 檔案, 會⾃自動幫我們建⽴立好 users 資料表 • 若沒有其他欄位要增加的話,在實作前先把這個資 料表透過 php artisan migrate 建⽴立起來 • 若 user 需要有額外的欄位需要紀錄,則可以先修改 migration 檔的內容再進⾏行 migrate;也可以新建⼀一個 migration 把要擴充的欄位增加上去
9.
user 資料表 • Laravel
的 User 是以 email 做為帳號唯⼀一值,各欄位名 稱及⽤用途如下: - id:資料表 auto-increment 的 key 值 - name:使⽤用者名稱 - email:使⽤用者電⼦子郵件,也同時做為帳號認證⽤用 - password:使⽤用者密碼,經 bcrypt 加密後儲存,資料 格式請設 VARCHAR 60 - remember_token:認證時做為是否記住我的 token 值,資料格式⾄至少 VARCHAR 100,在 migration 檔內可 ⽤用 $table-‐>rememberToken() 增加這個欄位
10.
註冊流程⽰示意圖 validator 成功回傳 建⽴立使⽤用者 create 通過 註冊資料 auth/register 失敗返回 錯誤訊息 成功訊息 /home
11.
Laravel 的註冊流程 • 使⽤用者先⾄至
/auth/register ⾴頁⾯面填寫註冊表單, 表單上有 名字、Email、密碼、確認密碼 四個欄位 (確 認密碼欄位的名稱請設定為 password_confirmation 以利表單驗證時欄位對 照⽤用) • 表單送出後,先經過 AuthController@validator 驗證表單資料,若失敗則返回、若成功則建⽴立新的 使⽤用者 • 驗證表單成功後,AuthController@create 會依 欄位建⽴立新的使⽤用者 • 所有動作完成後,返回⾄至 /home
12.
設定註冊 Routes • Laravel
5.1 已經幫我們將 Controller 準備好,僅需要 在 Route 裡指定路徑⾄至對應的 Controller 即可 • 要注意 Controller 要加 Auth 的 namespace,並且 注意對應到的 Controller ⽅方法不可錯 • 若有需要,可⾃自定 Route 名稱,⽅方便其他⾴頁⾯面以 route() 連結 // app/Http/routes.php Route::get('auth/register', ['as' => 'register.index', 'uses' => 'AuthAuthController@getRegister']); Route::post('auth/register', ['as' => 'register.process', 'uses' => 'AuthAuthController@postRegister');
13.
實作註冊表單 • Laravel 5.1
預設沒有提供對應的Views,不過官⽅方⽂文 件內有⽰示範如何撰寫表單原型,可以直接參考來改 • View 所預設放置的位置及檔名為:resources/views/ auth/register.blade.php (請務必依照預設命名檔案並放置在對應的 位置) // resources/views/auth/register.blade.php {!! Form::open(['route' => 'register.process', 'method' => 'post']) !!} {!! Form::text('name', null, ['id' => 'name']) !!} {!! Form::email('email', null, ['id' => 'email']) !!} {!! Form::password('password', null, ['id' => 'password']) !!} {!! Form::password('password_confirmation', null, ['id' => 'password_confirmation']) !!} {!! Form::submit('登⼊入') !!} {!! Form::close() !!}
14.
修改預設設定 • 假如使⽤用者資料表有需要額外的欄位,記得在 AuthController 裡的
validator 及 create 加上 對應的驗證及寫⼊入欄位的設定,⽽而 User Model 裡的 fillable 也要將欄位打開 • 若註冊完成後,不想要導到 /home,可以在 AuthController 內設定⼀一個 $redirectPath 屬 性,將要重新導向的網址以字串設定即可
15.
註冊流程核⼼心程式 • 關於使⽤用者註冊的功能,Laravel 預設提供了 AuthController
處理所有的動作,裡⾯面的程式碼 不多,因為⼤大多數的動作都直接使⽤用 IlluminateFoundationAuthAuthenticatesA ndRegistersUsers Trait 實作 • AuthenticatesAndRegistersUsers 裡⼜又分成兩個 Trait,其中 IlluminateFoundationAuthRegistersUsers 包含了所有關於註冊的動作,想了解 Laravel 如何實 作註冊動作,可以追⼀一下原始碼
16.
使⽤用者登⼊入/登出 ★ 參考⽂文件:http://laravel.com/docs/5.1/authentication#authentication-quickstart
17.
登⼊入流程⽰示意圖 validator 登⼊入 成功 登⼊入使⽤用者 Auth::attempt 通過 登⼊入認證 auth/login 失敗返回 錯誤訊息 /home 登⼊入 失敗 失敗 訊息
18.
Laravel 的登⼊入流程 • 使⽤用者先⾄至
/auth/login ⾴頁⾯面填寫登⼊入表單,表單 上有 Email、密碼 兩個欄位及⼀一個 記住我 的選勾欄 位 • 表單送出後,AuthController 會⾃自動⽤用 email 及 password 兩個欄位的值與資料庫內的資料做⽐比對 • 若失敗則返回登⼊入⾴頁、若成功則導⾄至 /home
19.
登出流程⽰示意圖 重導 登出使⽤用者 Auth::logout auth/logout / 登出 使⽤用者
20.
Laravel 的登出流程 • 將使⽤用者導⾄至
/auth/logout ⾴頁⾯面 • AuthController 會將現在登⼊入的使⽤用者登出 • 所有動作完成後,返回⾄至 /
21.
設定登⼊入/出 Routes • Laravel
5.1 已經幫我們將 Controller 準備好,僅需要 在 Route 裡指定路徑⾄至對應的 Controller 即可 • 要注意 Controller 要加 Auth 的 namespace,並且 注意對應到的 Controller ⽅方法不可錯 • 若有需要,可⾃自定 Route 名稱,⽅方便其他⾴頁⾯面以 route() 連結 // app/Http/routes.php Route::get('auth/login', ['as' => 'login.index', 'uses' => 'AuthAuthController@getLogin']); Route::post('auth/login', ['as' => 'login.process', 'uses' => 'AuthAuthController@postLogin']); Route::get('auth/logout', ['as' => 'logout.process', 'uses' => 'AuthAuthController@getLogout']);
22.
實作登⼊入表單 • Laravel 5.1
預設沒有提供對應的Views,不過官⽅方⽂文 件內有⽰示範如何撰寫表單原型,可以直接參考來改 • View 所預設放置的位置及檔名為:resources/views/ auth/login.blade.php (請務必依照預設命名檔案並放置在對應的位置) // resources/views/auth/login.blade.php {!! Form::open(['route' => 'login.process', 'method' => 'post']) !!} {!! Form::email('email', null, ['id' => 'email']) !!} {!! Form::password('password', null, ['id' => 'password']) !!} {!! Form::checkbox('remember', 1, true, ['id' => 'remember']) !!} {!! Form::submit('登⼊入') !!} {!! Form::close() !!}
23.
修改預設設定 • 若想要修改登⼊入失敗的訊息 (不是表單驗證的錯誤訊 息),可以在
AuthController 裡覆寫 getFailedLoginMessage ⽅方法裡的回傳字串 • 若登⼊入完成後,不想要導到 /home,可以在 AuthController 內設定⼀一個 $redirectPath 屬 性,將要重新導向的網址以字串設定即可 • 若登出完成後,不想要導到 /,可以在 AuthController 內設定⼀一個 $redirectAfterLogout 屬性,將要重新導向的網 址以字串設定即可
24.
登⼊入/出流程核⼼心程式 • AuthController 使⽤用了
IlluminateFoundationAuthAuthenticatesA ndRegistersUsers Trait,⽽而 AuthenticatesAndRegistersUsers 裡⼜又分成兩個 Trait,其中 IlluminateFoundationAuthAuthenticatesU sers 包含了所有關於登⼊入/出的動作,想了解 Laravel 如何實作登⼊入/出動作,可以追⼀一下原始碼
25.
忘記密碼 ★ 參考⽂文件:http://laravel.com/docs/5.1/authentication#resetting-passwords
26.
先建⽴立資料表 • Laravel 5.1
版有內建密碼重設的 migration 檔案,會 ⾃自動幫我們建⽴立好 password_resets 資料表 • 在實作前要把這個資料表透過 php artisan migrate 建⽴立起來
27.
password_resets 資料表 • 當
Laravel 要讓使⽤用者重設密碼時,會將重設密碼的 token 值存放在這個資料表,做為使⽤用者可否重設密 碼的認證: - email:使⽤用者帳號 - token:由 Laravel 產⽣生的 token 值,做為⽐比對⽤用 - created_at:紀錄申請重設的時間,預設為 1 ⼩小 時,若超過時間則要重新申請。
28.
忘記密碼流程⽰示意圖 validator 成功返回 寄出密碼重設信 設定使⽤用者忘記密碼 通過 帳號資料 password/email 失敗返回 錯誤訊息 成功訊息 產⽣生 token 紀錄
29.
Laravel 的忘記密碼流程 • 使⽤用者先⾄至
/password/email ⾴頁⾯面忘記密碼表單, 表單上只有 Email ⼀一個欄位 • 表單送出後,先經過 PasswordController@postEmail 驗證表單資料, 若失敗則返回 • 驗證表單成功後,PasswordController 會產⽣生重 設密碼 token 並紀錄在 password_resets 資料表 內,並將重設密碼連結 email 給使⽤用者 • 所有動作完成後,返回⾄至 /password/email
30.
設定忘記密碼 Routes • Laravel
5.1 已經幫我們將 Controller 準備好,僅需要 在 Route 裡指定路徑⾄至對應的 Controller 即可 • 要注意 Controller 要加 Auth 的 namespace,並且 注意對應到的 Controller ⽅方法不可錯 • 若有需要,可⾃自定 Route 名稱,⽅方便其他⾴頁⾯面以 route() 連結 // app/Http/routes.php Route::get('password/email' , ['as' => 'forgetpassword.index' , 'uses' => 'AuthPasswordController@getEmail']); Route::post('password/email', ['as' => 'forgetpassword.process', 'uses' => 'AuthPasswordController@postEmail']);
31.
實作忘記密碼表單 • Laravel 5.1
預設沒有提供對應的Views,不過官⽅方⽂文 件內有⽰示範如何撰寫表單原型,可以直接參考來改 • View 所預設放置的位置及檔名為:resources/views/ auth/password.blade.php (請務必依照預設命名檔案並放置在對應 的位置) • 重設密碼完成後,會把成功訊息以 status 變數放 在 session 裡,可在 view 上⾯面印出來 // resources/views/auth/password.blade.php {!! Form::open(['route' => 'forgetpassword.process', 'method' => 'post']) !!} {!! Form::email('email', null, ['id' => 'email']) !!} {!! Form::submit('忘記密碼') !!} {!! Form::close() !!}
32.
設定 Email • 確認完使⽤用者⾝身份後,Laravel
會幫我們寄出⼀一封密 碼重設信,所以要先設定 Email: - 設定 config/mail.php 裡的 from 區段內的寄件⼈人資 訊,包括 address 及 name - 設定 .env 裡的相關的 Email 設定值: ✓ MAIL_DRIVER -‐ ⼀一般是 SMTP ✓ MAIL_HOST -‐ Email 使⽤用的 SMTP 主機 ✓ MAIL_PORT、MAIL_ENCRYPTION -‐ 主機使⽤用的 port 及加密⽅方式 ✓ MAIL_USERNAME、MAIL_PASSWORD -‐ Email 帳號、密碼
33.
設定重設密碼信內容 • Laravel 內建帶有
resources/views/emails/ password.blade.php 會⽤用這個 view 當做重設密碼信的 內容 • 若想要修改信件的內容,直接修改這個 view 裡的 HTML 即可 // resources/views/emails/password.blade.php 點選此連結來重設您的密碼:{{ url('password/reset/'.$token) }}
34.
修改預設設定 • 假如想要修改重設密碼信的信件主旨,可以在 PasswordController 裡設定⼀一個
$subject 屬 性,以字串設定信件主旨即可 • 所有跟密碼重設的相關提⽰示⽂文字,都以多國語系字 串存在 resources/lang/{code}/passwords.php 內 • 其他更多重設密碼的設定,都紀錄在 config/auth.php 裡的 password 區段,包括重設密碼信使⽤用的 view (emails.password)、重設密碼使⽤用的資料表名稱 (password_resets) 以及重設密碼的有效時間 (reminder.expire 以分鐘計)
35.
忘記密碼流程核⼼心程式 • 關於忘記密碼的功能,Laravel 預設提供了 PasswordController
處理所有的動作,裡⾯面⼤大多 數的動作都直接使⽤用 IlluminateFoundationAuthResetsPassword s Trait 實作,想了解 Laravel 如何實作忘記密碼動 作,可以追⼀一下原始碼
36.
重設密碼 ★ 參考⽂文件:http://laravel.com/docs/5.1/authentication#resetting-passwords
37.
重設密碼流程⽰示意圖 validator 成功重設 並登⼊入 Password::reset 通過 認證資料 password/reset/{token} 失敗返回 錯誤訊息 重設使⽤用者密碼 登⼊入使⽤用者 /home
38.
Laravel 的重設密碼流程 • 使⽤用者從重設密碼信裡取得
/password/reset/ {token} ⾴頁⾯面的網址,點擊網址後進⼊入重設密碼⾴頁⾯面, 若 token 無效則回傳 404 • 重設密碼表單上有 Email、密碼、確認密碼 三個欄位 (確認 密碼欄位的名稱請設定為 password_confirmation 以利表單驗證時欄位對照⽤用) 及 ⼀一個 token 的隱藏欄位 • 表單送出後,先經過 PasswordController@postReset 驗證表單資料,若失敗則返回 • 驗證表單成功後,PasswordController 會將新密碼重 新加密後儲存,並將使⽤用者登⼊入 • 所有動作完成後,返回⾄至 /home
39.
設定重設密碼 Routes • Laravel
5.1 已經幫我們將 Controller 準備好,僅需要 在 Route 裡指定路徑⾄至對應的 Controller 即可 • 要注意 Controller 要加 Auth 的 namespace,並且 注意對應到的 Controller ⽅方法不可錯 • 若有需要,可⾃自定 Route 名稱,⽅方便其他⾴頁⾯面以 route() 連結 // app/Http/routes.php Route::get('password/reset/{token}', ['as' => 'resetpassword.index', 'uses' => 'AuthPasswordController@getReset']); Route::post('password/reset', ['as' => 'resetpassword.process', 'uses' => 'AuthPasswordController@postReset']);
40.
實作重設密碼表單 • Laravel 5.1
預設沒有提供對應的Views,不過官⽅方⽂文 件內有⽰示範如何撰寫表單原型,可以直接參考來改 • View 所預設放置的位置及檔名為:resources/views/ auth/reset.blade.php (請務必依照預設命名檔案並放置在對應的位置) // resources/views/auth/reset.blade.php {!! Form::open(['route' => 'resetpassword.process', 'method' => 'post']) !!} {!! Form::hidden('token', $token) !!} {!! Form::email('email', null, ['id' => 'email']) !!} {!! Form::password('password', null, ['id' => 'password']) !!} {!! Form::password('password_confirmation', null, ['id' => 'password_confirmation']) !!} {!! Form::submit('重設密碼') !!} {!! Form::close() !!}
41.
修改預設設定 • 若重設密碼完成後,不想要導到 /home,可以在 PasswordController
內設定⼀一個 $redirectTo 屬 性,將要重新導向的網址以字串設定即可
42.
重設密碼流程核⼼心程式 • 關於重設密碼的功能,Laravel 預設提供了 PasswordController
處理所有的動作,裡⾯面⼤大多 數的動作都直接使⽤用 IlluminateFoundationAuthResetsPassword s Trait 實作,想了解 Laravel 如何實作重設密碼動 作,可以追⼀一下原始碼
43.
認證相關實作
44.
確認⺫⽬目前登⼊入狀態 • Laravel 提供
Auth Facade 可以讓我們在任何地⽅方確 認使⽤用者⺫⽬目前的登⼊入狀態,回傳值是 boolean: -‐ Auth::check()
45.
取得登⼊入使⽤用者資訊 • 當使⽤用者成功登⼊入系統後,Laravel 提供
2 種⽅方式可 以讓我們很⽅方便的取得⺫⽬目前登⼊入使⽤用者的資訊: -‐ $user = Auth::user(); -‐ $user = $request-‐>user();
46.
限制僅供登⼊入後瀏覽 • 如何保護⾴頁⾯面限制只有登⼊入的使⽤用者可以瀏覽?有 兩種⽅方式: - 在
Route 上設定 middleware - 在 Controller 的 construct 裡設定 middleware // app/Http/routes.php Route:: group('users/profile', ['middleware' => 'auth', function() { // 只有登⼊入後的使⽤用者才可以通過 }]); // app/Http/Controllers/UsersController.php public function __construct() { $this-‐>middleware('auth'); }
47.
若已經登⼊入⾃自動跳轉 • 若在某些⾴頁⾯面要讓已經登⼊入的使⽤用者瀏覽時⾃自動跳 轉 (如登⼊入⾴頁、忘記密碼、重設密碼⾴頁等),可在 Controller
上設定 guest 的 middleware • 若要修改跳轉⾴頁的網址,請修改 app/Http/ Middleware/RedirectIfAuthenticated.php 裡的路徑 // app/Http/Middleware/RedirectIfAuthenticated.php if ($this-‐>auth-‐>check()) { return redirect('/'); } // app/Http/Controllers/Auth/PasswordController.php public function __construct() { $this-‐>middleware('guest'); }
48.
單元總結 • 在這個單元裡我們學到了些什麼? - 標準網路應⽤用程式的使⽤用者認證實作 -
Laravel 5.1 提供的使⽤用者認證功能 - ⽰示範專案使⽤用者認證實作⽅方式
49.
Q & A 歡迎提問討論
Download now