如何在Laravel中實現Email驗證與兩步驟驗證(強化網站安全的完整教學)

更新於 發佈於 閱讀時間約 9 分鐘

網站的安全性對於保護用戶資料和防止惡意攻擊至關重要。對於許多應用來說,實現Email驗證和兩步驟驗證(2FA)是增強用戶安全的一種有效方式。今天將探索如何在Laravel框架中實現這兩項功能,並結合Google Gmail的應用程式密碼,從而保障你網站的用戶帳號安全。

什麼是Email驗證?

Email驗證是一個過程,確保用戶提供的電子郵件地址有效且可用。通常,這包括向用戶的郵箱發送一封驗證郵件,當用戶點擊郵件中的鏈接時,標誌著他們已經驗證其電子郵件地址。

什麼是兩步驟驗證(2FA)?

兩步驟驗證(2FA)是一種安全機制,它要求用戶在登入時提供兩種不同的認證方式。通常,這會是用戶的密碼和從手機或應用程序中生成的臨時代碼。這樣即使駭客知道你的密碼,沒有第二步的驗證,也無法登入你的帳號。

在Laravel中設置Email驗證

1. 開啟Google帳戶的兩步驟驗證

首先,你需要確保你的Gmail帳戶開啟了兩步驟驗證。這樣可以增強帳戶的安全性:

  1. 登錄到你的Gmail帳戶。
  2. 前往Google帳戶安全性設置。
  3. 在「登入Google」部分,啟用「兩步驟驗證」。
  4. 開啟後,Google會要求你設置應用程式密碼,用來授權非Google應用程序(如Laravel)的訪問。

2. 在Laravel中配置Email驗證

接下來,將展示如何在Laravel中實現Email驗證功能。

2.1 開啟應用程式密碼

在Gmail設置中,開啟「應用程式密碼」,並創建一組密碼來讓Laravel與Gmail進行連接。這段密碼將在.env檔案中使用,確保與Laravel郵件功能兼容。

2.2 配置.env文件

打開你的 .env 文件,並設置以下內容以配置SMTP郵件發送:

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=你的Gmail帳戶
MAIL_PASSWORD=應用程式密碼
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=你的Gmail帳戶
MAIL_FROM_NAME="${APP_NAME}"

這樣,Laravel就能通過Google的SMTP伺服器發送郵件。

2.3 更新User模型以支持Email驗證

User模型中,我們需要實現MustVerifyEmail接口,這樣Laravel將自動處理Email驗證功能。

<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail; //引入Email驗證接口
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable implements MustVerifyEmail //實現MustVerifyEmail接口
{
use HasApiTokens;
use HasFactory;
use Notifiable;

/**
* 用戶可批量賦值的屬性
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
];

/**
* 隱藏於JSON序列化中的屬性
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];

/**
* 要進行類型轉換的屬性
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime', //將email_verified_at轉換為時間格式
'password' => 'hashed', //密碼加密處理
];
}

這段程式確保用戶需要經過Email驗證才能進行登錄,email_verified_at字段會在用戶成功驗證後自動填入驗證時間。

2.4 自訂Email驗證通知

如果你希望自訂Email驗證的內容(如郵件主題、內容),你可以在 AuthServiceProvider 中進行設定。

<?php

namespace App\Providers;

use Illuminate\Auth\Notifications\VerifyEmail;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
public function boot(): void
{
// 自訂驗證郵件的內容
VerifyEmail::toMailUsing(function ($notifiable, $url) {
return (new MailMessage)
->subject('驗證您的電子郵件')
->line('請點擊下面的按鈕來完成Email驗證。')
->action('驗證帳號', $url);
});
}
}

這樣當用戶註冊後,會收到一封自訂內容的驗證郵件。

2.5 添加驗證中介層至路由

為了保護某些需要Email驗證的路由,你可以使用verified中介層來限制只有已經驗證的用戶才能訪問這些路由。

Route::prefix('admin')->middleware(['auth', 'verified'])->group(function () {
Route::get('/', function () {
return Inertia::render('Backend/Dashboard');
})->name('dashboard');
});

這段程式確保用戶必須先驗證其Email地址,才能訪問/admin路由。

驗證成功後

  • 在資料庫的users表中,當用戶驗證成功後,email_verified_at欄位會被填入具體的驗證時間,否則它的值為null
  • 用戶需要先通過驗證郵件中的連結,才可以成功登錄並訪問受保護的頁面。

結語

通過上述步驟,不僅在Laravel中成功實現了Email驗證,還加強了應用的安全性,確保用戶的帳號不易被盜用。這不僅提升了網站的防禦力,也為用戶提供了更好的保護。兩步驟驗證和Email驗證是現代Web應用中不可或缺的安全措施。接下來會介紹在Laravel中實現郵件通知。


對於這類的撰寫方式習慣嗎?歡迎多多進行良性的知識交流喔!目前是在學習階段,大家有不同看法的話歡迎進行良性的知識交流!

 

大家可以考慮多多分享文章和考慮訂閱沙龍方案或贊助等喔!不過請注意不要違反著作權等行為。當然決定權都在於您,不會干涉您的任何決定。

 

提醒,文章僅供正當的知識參考,文章不負任何責任。


avatar-img
1會員
28內容數
有軟體開發相關文章。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿棋的沙龍 的其他內容
在現代網絡安全環境中,網站的安全性至關重要。為了確保你的網站免受各種攻擊,進行網站弱點掃描是不可或缺的一步。今天,將介紹一個強大且免費的網站安全掃描工具——OWASP ZAP(Zed Attack Proxy),它不僅功能強大,且易於使用,適合各種用戶,無論你是初學者還是資深的安全專家。
在Laravel的後臺管理系統中,Middleware和Validate是兩個強大的工具,它們能幫助我們進行用戶權限管理、資料驗證及安全性加強。在這篇文章中,將介紹如何利用這些工具,來增強Laravel應用的權限控制和資料驗證。
在現代 Web 應用中,實現用戶登入功能是非常基本且重要的步驟。本文將帶您了解如何在 Laravel 中構建一個完整的登入系統,涵蓋後端處理邏輯、前端表單設計以及相關的路由和中間件設定。這篇指南旨在幫助您建立一個簡潔且可擴展的登入流程。
在開發 Web 應用時,管理大量資料通常需要處理分頁和格式化顯示的需求。本文將介紹如何在 Laravel 中實現 時間格式轉換 以及 分頁功能,並用實際案例來展示如何將這些功能整合到你的應用程式中。
在這篇文章中,我們將深入探討如何在 Laravel 應用程式中處理檔案上傳。我們將從前端頁面的檔案選擇到後端儲存與顯示檔案的完整流程,涵蓋從用戶選擇檔案,到將其上傳並保存在伺服器,直到如何在資料庫中儲存檔案路徑,並在頁面上顯示它們。這些步驟將有助於您瞭解如何在 Laravel 中高效地處理檔案上傳。
在這篇文章中,將介紹如何使用 Laravel 和 Vue 3,並搭配 Inertia.js 來建立一個簡單的電影資料管理系統。我們將涵蓋電影資料的新增、編輯、刪除等基本操作,並且實現動態更新頁面而不需重新載入。
在現代網絡安全環境中,網站的安全性至關重要。為了確保你的網站免受各種攻擊,進行網站弱點掃描是不可或缺的一步。今天,將介紹一個強大且免費的網站安全掃描工具——OWASP ZAP(Zed Attack Proxy),它不僅功能強大,且易於使用,適合各種用戶,無論你是初學者還是資深的安全專家。
在Laravel的後臺管理系統中,Middleware和Validate是兩個強大的工具,它們能幫助我們進行用戶權限管理、資料驗證及安全性加強。在這篇文章中,將介紹如何利用這些工具,來增強Laravel應用的權限控制和資料驗證。
在現代 Web 應用中,實現用戶登入功能是非常基本且重要的步驟。本文將帶您了解如何在 Laravel 中構建一個完整的登入系統,涵蓋後端處理邏輯、前端表單設計以及相關的路由和中間件設定。這篇指南旨在幫助您建立一個簡潔且可擴展的登入流程。
在開發 Web 應用時,管理大量資料通常需要處理分頁和格式化顯示的需求。本文將介紹如何在 Laravel 中實現 時間格式轉換 以及 分頁功能,並用實際案例來展示如何將這些功能整合到你的應用程式中。
在這篇文章中,我們將深入探討如何在 Laravel 應用程式中處理檔案上傳。我們將從前端頁面的檔案選擇到後端儲存與顯示檔案的完整流程,涵蓋從用戶選擇檔案,到將其上傳並保存在伺服器,直到如何在資料庫中儲存檔案路徑,並在頁面上顯示它們。這些步驟將有助於您瞭解如何在 Laravel 中高效地處理檔案上傳。
在這篇文章中,將介紹如何使用 Laravel 和 Vue 3,並搭配 Inertia.js 來建立一個簡單的電影資料管理系統。我們將涵蓋電影資料的新增、編輯、刪除等基本操作,並且實現動態更新頁面而不需重新載入。
你可能也想看
Google News 追蹤
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
想發簡訊給自己經營的電商會員時,可以直接用大量簡訊平台一次發送。 但目前因為詐騙簡訊"盛行"的關係,申請這類平台的規則也變嚴格了,連自己的個資也要上繳給這些平台做身份驗證,所以還是找一些安全、有信譽的廠商,免得把自己的個資賣掉外,自己會員的個資也賣了。
在今天的數字世界中,網站安全性是極為重要的議題。隨著越來越多的網站選擇採用HTTPS協議加密數據傳輸,但這並不意味著它是絕對安全的。事實上,HTTPS本身也存在著一些安全隱患,這些隱患可能會影響網站的安全性和用戶的數據隱私。 1. SSL/TLS 憑證漏洞 HTTPS的加密基於SSL/TLS
在今日數位化的世界中,保護資料的安全性尤為重要。加密憑證(SSL/TLS Certificates)扮演著確保網站和用戶之間資料傳輸安全的重要角色。本文將深入探討加密憑證的原理、作用以及如何選擇適合的加密憑證來保護您的網站。 1. 加密憑證的基本概念 加密憑證是一種數位檔案,用於證明網站身份的真
Thumbnail
在數碼時代,網站安全變得越來越重要。特別是對於使用 WordPress 平臺的網站,保障安全尤為關鍵。本文將介紹一些實用的方法,幫助您保護 WordPress 網站免受各種威脅。為什麼 WordPress 安全至關重要?
在現今數位時代,網路安全已成為企業和個人必須面對的首要挑戰。隨著網路犯罪活動的日益猖獗,如何有效地保護敏感資訊並確保網絡環境的安全,成為每個組織和個人不可忽視的重要課題。本文將帶你了解如何利用先進的監控軟體來提升資訊安全,為您提供全面的解決方案。
Thumbnail
1. 如何分辨詐騙、避免被詐騙 2. 掃毒、增強帳號安全、多段驗證、安全金鑰 3.快速取回帳號
Thumbnail
使用React.js實作CAPTCHA元件的步驟和技巧
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
Thumbnail
想發簡訊給自己經營的電商會員時,可以直接用大量簡訊平台一次發送。 但目前因為詐騙簡訊"盛行"的關係,申請這類平台的規則也變嚴格了,連自己的個資也要上繳給這些平台做身份驗證,所以還是找一些安全、有信譽的廠商,免得把自己的個資賣掉外,自己會員的個資也賣了。
在今天的數字世界中,網站安全性是極為重要的議題。隨著越來越多的網站選擇採用HTTPS協議加密數據傳輸,但這並不意味著它是絕對安全的。事實上,HTTPS本身也存在著一些安全隱患,這些隱患可能會影響網站的安全性和用戶的數據隱私。 1. SSL/TLS 憑證漏洞 HTTPS的加密基於SSL/TLS
在今日數位化的世界中,保護資料的安全性尤為重要。加密憑證(SSL/TLS Certificates)扮演著確保網站和用戶之間資料傳輸安全的重要角色。本文將深入探討加密憑證的原理、作用以及如何選擇適合的加密憑證來保護您的網站。 1. 加密憑證的基本概念 加密憑證是一種數位檔案,用於證明網站身份的真
Thumbnail
在數碼時代,網站安全變得越來越重要。特別是對於使用 WordPress 平臺的網站,保障安全尤為關鍵。本文將介紹一些實用的方法,幫助您保護 WordPress 網站免受各種威脅。為什麼 WordPress 安全至關重要?
在現今數位時代,網路安全已成為企業和個人必須面對的首要挑戰。隨著網路犯罪活動的日益猖獗,如何有效地保護敏感資訊並確保網絡環境的安全,成為每個組織和個人不可忽視的重要課題。本文將帶你了解如何利用先進的監控軟體來提升資訊安全,為您提供全面的解決方案。
Thumbnail
1. 如何分辨詐騙、避免被詐騙 2. 掃毒、增強帳號安全、多段驗證、安全金鑰 3.快速取回帳號
Thumbnail
使用React.js實作CAPTCHA元件的步驟和技巧
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。