遇見 Laravel 的午後(Part 14)
這章節開始要介紹用戶登入相關的用法,先認識 驗證(Authentication) 及 授權(Authorization) ,這兩個差別在哪?
驗證(Authentication) 是確認是否有這個用戶。
未通過驗證,回傳 401 Unauthorized
授權(Authorization) 則是用戶是否有權限做這件事情。
通過驗證但未授權,回傳403 Forbidden
用戶驗證(Authentication)
想要一口氣踏入 Laravel 專案嗎? 當你要建立一個會員登入,建立完就過了兩週,這時候不用這麼麻煩,Laravel 提供的登入機制,只要10分鐘,就可以完成。
用戶登入需要的功能,分成四部份
- 用戶註冊
- 用戶登入
- 用戶登出
- 用戶密碼重設
前置作業
驗證的配置設定都在 專案 > config > auth.php
這裡面。
建立 Laravel 專案
1 | $ laravel new auth |
進入專案
1 | $ cd auth |
啟動內建伺服器
1 | $ php artisan serve |
專案的起始頁面
加入身分驗證功能
利用 Composer 安裝 UI 的套件
1 | $ composer require laravel/ui --dev |
建立含有用戶驗證的框架,分別為 Bootstrap、Vue、React 三種,這邊我以 Bootstrap 當範例
- laravel 6 以下執行
php artisan make:auth
- laravel 6 以上執行 指令其中一個即可,6以上 laravel 將他做分離了。
1 | $ php artisan ui bootstrap --auth |
以上步驟其實可以省略(但他會使用 Vue 的框架去建立用戶驗證)
1 | $ laravel new 專案名稱 --auth |
專案可能原先需要安裝的套件並編譯
1 | $ npm install && npm run dev |
建立完成增加的檔案
Views 會增加 8 支 Blade模板專案 > resources > views
- auth > login.blade.php
- auth > register.blade.php
- auth > verify.blade.php
- auth > passwords > confirm.blade.php
- auth > passwords > email.blade.php
- auth > passwords > reset.blade.php
- layouts > app.blade.php
- home.blade.php
Controllers 會增加約 7 支程式專案 > app > Http > Controllers
- Auth > ConfirmPasswordController.php
- Auth > ForgotPasswordController.php (忘記用戶密碼)
- Auth > LoginController.php (用戶登入)
- Auth > RegisterController.php (用戶註冊)
- Auth > ResetPasswordController.php (用戶密碼重設)
- Auth > VerificationController.php
- HomeController.php
Model 的部分,建立專案時已經建好 專案 > app > User.php
建立資料庫及設置資料庫連線
我是用 MySQL 提供的 WorkBench 去做資料庫的管理,登入的部分請自行設定,這邊我就省略介紹。
登入建立一個資料庫
名稱:auth
編碼:utf8_general_ci
回到專案裡,開啟 .env 檔案,修改 DB_DATABASE(資料庫名稱)
、DB_USERNAME(資料庫伺服器帳號)
、DB_PASSWORD(資料庫伺服器密碼)
Laravel 專案 > .env
1 | DB_CONNECTION=mysql |
建立資料表
Laravel 專案裡已經幫我們寫好 migration
,我們只要執行它就可以了Laravel 專案 > database > migrations
執行 migration
1 | $ php artisan migrate |
回到資料庫重新整理,剛剛建立的資料表都出現了
啟動內建伺服器
1 | $ php artisan serve |
右上角就會出現 LOGIN、REGISTER 的連結。
點進 Login
點進 Regidter
註冊完成,顯示的畫面
取消註冊功能
有些人可能不需要用戶註冊功能,只要做兩個步驟
- 刪除
專案 > app > Http > Controllers > Auth > RegisterController.php
Auth::routes();
改成Auth::routes(['register' => false]);
,不顯示註冊
專案 > routes > web.php
1 |
|
結果
啟用 Email 信箱驗證
- 修改
class User extends Authenticatable
改成class User extends Authenticatable implements MustVerifyEmail
Auth::routes();
改成Auth::routes(['verify' => true]);
,不顯示註冊- Email 伺服器
.env
設置,刪掉MAIL_FROM_ADDRESS
及MAIL_FROM_NAME
。
專案 > app > User.php
1 |
|
專案 > routes > web.php
1 |
|
專案 > .env
1 | MAIL_MAILER=smtp |
信箱收信結果
結論
以上就是簡單的快速登入頁面,但下一章節會介紹 Email 寄信的方法,會再一一介紹登入該注意的部分及用法。
標籤: w3HexSchool
PHP
Laravel
原文作者: Sian
原文鏈接: https://dew31794.github.io/2020/08/23/遇見 Laravel 的午後(Part 14)/
版權聲明: 轉載請註明出處(必須保留作者署名及鏈接)