LARAVEL TUTORIALS
10 thủ thuật Lavavel giúp bạn code nhanh hơn! Routing trong Laravel, cách tạo Route và sử dung AZ Tạo Middleware trong Laravel đơn giản trong 5 phút Xử lý Authentication và Authorization trong Laravel Event và listener trong Laravel, cách tạo và quản lý cơ bản nhất Tạo broadcast event trong Laravel dễ dàng trong 10 phút Xử lý Form Validation trong Laravel từ A - Z Cách tạo Session và cookie trong Laravel dễ dàng như ăn cháo Top 10 Package Lavavel thường dùng trong dự án Laravel Sử dụng Task trong Laravel đơn giản trong 10 phút. Cách tạo API trong Laravel đơn giản chỉ trong 5 phút Cách tạo job trong Laravel sao cho hiệu quả? Queues trong Laravel, dùng để xử lý các tác vụ mất nhiều thời gian Cache trong Laravel, các loại Cache thường dùng trong Laravel Redis trong Laravel, biết cách sử dung Redis Laravel trong 5 phút Sử dụng Memcache trong Laravel tăng tốc độ truy cập website Unit Test trong Laravel, thực hành tạo testing Laravel A-Z 10 thủ thuật tối ưu quá trình Testing trong Laravel Top 7 thư viện Testing Laravel được dùng nhiều nhất Testbench và Orchestra Testbench trong Laravel, kiểm thử Laravel dễ dàng Cách dùng Browser Testing (Laravel Dusk) trong Laravel Cách tạo test case cho Controller trong Laravel Cách tạo test case cho Model trong Laravel Cách tạo Database Testing trong Laravel Real-time web applications là gì ? Tầm quan trọng trong Laravel Laravel WebSockets, các bước tạo WebSockets trong Laravel Cách dùng Socket.io trong Laravel để tạo ứng dụng realtime Dùng Server-Sent Events trong Laravel để làm ứng dụng realtime Cách dùng Long polling trong Laravel để cải thiện trải nghiệm Cách tích hợp Vue.js vào Laravel và làm một ứng dụng căn bản Task Scheduling là gì? Cấu hình Task Scheduling trong Laravel Cách dùng Queue trong laravel để tạo tác vụ bất đồng bộ Cách dùng Event Sourcing trong Laravel Cách sử dụng CQRS trong Laravel từ A đến Z đơn giản Sử dụng Service Container trong Laravel dễ dàng Cách xử lý đa ngôn ngữ trong Laravel dễ dàng Tìm hiểu và sử dụng Service Provider trong Laravel Facades là gì? Cách dùng Facades trong Laravel Cách sử dụng Email Verification trong Laravel Cách dùng URL Generation trong Larevel Cách sử dụng Error Handling trong Laravel Cách dùng Encryption và decryption trong Laravel Cách sử dụng Relationships trong Laravel Bài 01: Laravel là gì? Hướng dẫn cài đặt laravel trên windows Sử dụng Event trong Laravel Một cách quản lý filter trong Laravel
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Cách sử dụng Email Verification trong Laravel

Hướng dẫn cách sử dụng Email Verification trong Laravel để bảo vệ tài khoản người dùng và đảm bảo tính bảo mật của ứng dụng web của bạn.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong bài viết này, chúng ta sẽ tìm hiểu về cách sử dụng Email Verification trong Laravel để bảo vệ tài khoản người dùng và đảm bảo tính bảo mật của ứng dụng web của bạn. Chúng ta sẽ bắt đầu bằng việc giải thích khái niệm về Email Verification và lợi ích của việc sử dụng tính năng này trong Laravel.

Email Verification trong Laravel là gì?

mail verification in laravel 5 png

Giao diện Email Verification

Email Verification là một tính năng quan trọng trong các ứng dụng web hiện đại để xác thực tính đúng đắn của thông tin người dùng và đảm bảo tính bảo mật của tài khoản người dùng. Trong Laravel, Email Verification được triển khai bằng cách gửi một email chứa mã xác nhận đến địa chỉ email của người dùng và yêu cầu người dùng xác thực email của họ bằng cách nhập mã xác nhận vào trong ứng dụng web. Sau khi xác thực thành công, tài khoản của người dùng sẽ được kích hoạt và họ có thể đăng nhập vào ứng dụng. Tính năng Email Verification là một trong những tính năng được tích hợp sẵn trong Laravel để giúp cho việc xác thực tài khoản người dùng trở nên đơn giản và tiện lợi hơn.

Cách kích hoạt Email Verification trong Laravel

Để kích hoạt tính năng xác minh email trong Laravel, bạn có thể thực hiện các bước sau:

Bài viết này được đăng tại [free tuts .net]

Cấu hình file .env và config/auth.php

Đầu tiên, bạn cần cấu hình các thông tin về xác minh email trong file .env:

MAIL_DRIVER=smtp
MAIL_HOST=your-email-host
MAIL_PORT=587
MAIL_USERNAME=your-email-username
MAIL_PASSWORD=your-email-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=your-email@example.com
MAIL_FROM_NAME="${APP_NAME}"

Trong đó, bạn cần thay đổi your-email-host, your-email-username, your-email-password, và your-email@example.com thành thông tin email của bạn.

Bạn cũng cần cấu hình các thông tin về xác minh email trong file config/auth.php:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
        'hash' => false,
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
],

'passwords' => [
    'users' => [
        'provider' => 'users',
        'table' => 'password_resets',
        'expire' => 60,
        'throttle' => 60,
    ],
],

'verification' => [
    'expire' => 60,
    'table' => 'email_verifications',
    'after_resend' => 120,
    'redirect_to' => '/email-verified',
],

Trong đó, bạn cần kiểm tra xem model trong phần providers có trỏ đúng đến model User của bạn không.

Sử dụng trait trong model

Tiếp theo, bạn cần sử dụng trait Illuminate\Auth\MustVerifyEmail trong model User của bạn:

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable implements MustVerifyEmail
{
    // ...
}

Thêm một trường trong migration

Bạn cần thêm một trường email_verified_at vào migration chi tiết của bảng users:

Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->nullable();
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
});

Sau khi thực hiện các bước này, tính năng xác minh email sẽ được kích hoạt trong ứng dụng Laravel của bạn.

Quá trình xử lý Email Verification trong Laravel

Gửi email xác nhận cho người dùng: Khi người dùng đăng ký tài khoản mới hoặc thay đổi địa chỉ email, họ sẽ được gửi một email xác nhận từ ứng dụng của bạn. Email này chứa một liên kết để xác thực địa chỉ email của người dùng. Để gửi email, bạn có thể sử dụng class Illuminate\Auth\Notifications\VerifyEmail của Laravel. Bạn cần gửi email từ một tài khoản email được cấu hình trước đó trong file .env.

Xác thực email và kích hoạt tài khoản: Khi người dùng nhấp vào liên kết trong email xác nhận, họ sẽ được đưa đến một trang xác nhận. Trang này xác thực địa chỉ email của người dùng và kích hoạt tài khoản. Laravel cung cấp một trang mặc định để xác nhận email, nhưng bạn cũng có thể tạo trang xác nhận email tùy chỉnh của riêng bạn.

Xử lý lỗi và thông báo cho người dùng: Trong quá trình xử lý xác thực email, có thể xảy ra nhiều lỗi khác nhau. Bạn cần kiểm tra các lỗi này và cung cấp thông báo phù hợp cho người dùng. Ví dụ, nếu liên kết xác nhận đã hết hạn hoặc không hợp lệ, bạn cần hiển thị một thông báo lỗi cho người dùng. Laravel cung cấp các thông báo lỗi mặc định và bạn cũng có thể tạo thông báo tùy chỉnh của riêng bạn.

Để thực hiện các bước trên, bạn cần sử dụng các lớp và phương thức của Laravel như sau:

Gửi email xác nhận cho người dùng

use Illuminate\Auth\Notifications\VerifyEmail;

$user->sendEmailVerificationNotification();

Xác thực email và kích hoạt tài khoản

Để xác thực email và kích hoạt tài khoản, sử dụng các phương thức trong class Illuminate\Foundation\Auth\VerifiesEmails. Bạn cần đăng ký route để xử lý các yêu cầu xác nhận email, ví dụ:

Route::get('/email/verify', function () {
    return view('auth.verify-email');
})->middleware(['auth'])->name('verification.notice');

Route::get('/email/verify/{id}/{hash}', function (EmailVerificationRequest $request) {
    $request->fulfill();

    return redirect('/home');
})->middleware(['auth', 'signed'])->name('verification.verify');

Trong đó, route đầu tiên là để hiển thị trang xác nhận email cho người dùng, còn route thứ hai là để xác thực địa chỉ email của người dùng. Bạn cần đảm bảo rằng middleware auth đã được áp dụng để đảm bảo rằng người dùng đã đăng nhập trước khi xác nhận email.

Xử lý lỗi và thông báo cho người dùng

Để xử lý lỗi và hiển thị thông báo cho người dùng, bạn có thể sử dụng các thông báo lỗi mặc định của Laravel hoặc tạo các thông báo tùy chỉnh của riêng bạn. Ví dụ, để hiển thị thông báo lỗi khi liên kết xác nhận đã hết hạn, sử dụng phương thức emailVerificationRequest trong class Illuminate\Auth\Notifications\VerifyEmail:

use Illuminate\Auth\Notifications\VerifyEmail;

public function emailVerificationRequest(Request $request)
{
    $user = $request->user();

    if ($user->hasVerifiedEmail()) {
        return redirect()->intended(RouteServiceProvider::HOME);
    }

    $user->sendEmailVerificationNotification();

    return back()->with('status', 'verification-link-sent');
}

Trong đó, phương thức hasVerifiedEmail() kiểm tra xem email của người dùng đã được xác nhận chưa. Nếu đã được xác nhận, người dùng sẽ được đưa đến trang chủ của ứng dụng. Nếu chưa được xác nhận, ứng dụng sẽ gửi lại email xác nhận và hiển thị thông báo cho người dùng.

Tùy chỉnh Email Verification trong Laravel

Để tùy chỉnh quá trình xác minh email trong Laravel, bạn có thể thực hiện các bước sau đây:

Cấu hình email gửi đi

Đầu tiên, bạn cần cấu hình thông tin email gửi đi trong file .env:

MAIL_DRIVER=smtp
MAIL_HOST=your-email-host
MAIL_PORT=587
MAIL_USERNAME=your-email-username
MAIL_PASSWORD=your-email-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=your-email@example.com
MAIL_FROM_NAME="${APP_NAME}"

Trong đó, bạn cần thay đổi your-email-host, your-email-username, your-email-password, và your-email@example.com thành thông tin email của bạn.

Thay đổi nội dung email gửi đi

Bạn có thể thay đổi nội dung email gửi đi bằng cách sửa đổi file resources/views/emails/verify.blade.php. Trong file này, bạn có thể chỉnh sửa các thông tin như tiêu đề, nội dung và nút xác minh.

  • Tạo một file email blade mới trong thư mục /resources/views/emails/ và đặt tên tùy ý (ví dụ: verify-email.blade.php)
  • Trong file blade này, bạn có thể sử dụng các biến dữ liệu được truyền từ phần mềm như {{ $name }} để hiển thị thông tin tương ứng.
  • Sau khi thiết lập xong, hãy trỏ đến file blade mới trong file /app/Http/Controllers/Auth/VerificationController.php
public function sendEmailVerificationNotification()
{
    $this->user->sendEmailVerificationNotification(new VerifyEmailQueue($this->user));
}

Thay đổi VerifyEmailQueue bằng tên file blade bạn mới tạo.

Tùy chỉnh trang thông báo cho người dùng

Bạn có thể tùy chỉnh trang thông báo cho người dùng bằng cách sửa đổi file resources/views/auth/verify.blade.php. Trong file này, bạn có thể thay đổi các thông tin như tiêu đề, nội dung và các liên kết điều hướng.

Ngoài ra, bạn cũng có thể tạo một file mới và sử dụng nó thay vì sử dụng file verify.blade.php mặc định. Để làm điều này, bạn cần sửa đổi phương thức verified trong file app/Http/Controllers/Auth/VerificationController.php:

protected function verified(Request $request, $user)
{
    return view('auth.custom_verify');
}

Trong đó, auth.custom_verify là tên file của trang thông báo mới. Bạn cần tạo file mới này trong thư mục resources/views/auth/.

Kết bài viết

Sau khi đọc bài viết này về cách sử dụng Email Verification trong Laravel, bạn đã hiểu được cách áp dụng tính năng này vào ứng dụng web của mình. Việc xác thực email là một trong những phương pháp quan trọng để đảm bảo tính bảo mật và đáng tin cậy cho hệ thống của bạn.

Với Laravel, việc triển khai Email Verification trở nên dễ dàng hơn bao giờ hết, nhờ vào các tính năng và công cụ mạnh mẽ được tích hợp sẵn trong framework này. Bài viết đã cung cấp cho bạn một hướng dẫn chi tiết về cách tạo và cấu hình tính năng Email Verification trong Laravel. Bạn đã học được cách tạo migration để tạo bảng chứa thông tin xác thực email, tạo route, controller và view để hiển thị form xác thực và xử lý logic xác thực khi người dùng nhập mã xác thực vào form.

Bên cạnh đó, bài viết cũng cung cấp cho bạn những kiến thức về cách gửi email xác thực tới người dùng, cách cấu hình email server trong Laravel và cách tạo custom email template để tương thích với thiết kế website của bạn.

Trên hết, tính năng Email Verification trong Laravel giúp cho ứng dụng web của bạn trở nên an toàn và đáng tin cậy hơn, giúp cho khách hàng của bạn có thể tin tưởng và sử dụng dịch vụ của bạn một cách an toàn nhất. Tóm lại, việc triển khai Email Verification trong Laravel là một bước quan trọng trong việc tạo ra một hệ thống web an toàn và đáng tin cậy.

Cùng chuyên mục:

Cách sử dụng Relationships trong Laravel

Cách sử dụng Relationships trong Laravel

Cách dùng Encryption và decryption trong Laravel

Cách dùng Encryption và decryption trong Laravel

Cách sử dụng Error Handling trong Laravel

Cách sử dụng Error Handling trong Laravel

Cách dùng URL Generation trong Larevel

Cách dùng URL Generation trong Larevel

Facades là gì? Cách dùng Facades trong Laravel

Facades là gì? Cách dùng Facades trong Laravel

Tìm hiểu và sử dụng Service Provider trong Laravel

Tìm hiểu và sử dụng Service Provider trong Laravel

Sử dụng Service Container trong Laravel dễ dàng

Sử dụng Service Container trong Laravel dễ dàng

Cách xử lý đa ngôn ngữ trong Laravel dễ dàng

Cách xử lý đa ngôn ngữ trong Laravel dễ dàng

Cách sử dụng CQRS trong Laravel từ A đến Z đơn giản

Cách sử dụng CQRS trong Laravel từ A đến Z đơn giản

Cách dùng Event Sourcing trong Laravel

Cách dùng Event Sourcing trong Laravel

Task Scheduling là gì? Cấu hình Task Scheduling trong Laravel

Task Scheduling là gì? Cấu hình Task Scheduling trong Laravel

Cách dùng Queue trong laravel để tạo tác vụ bất đồng bộ

Cách dùng Queue trong laravel để tạo tác vụ bất đồng bộ

Cách tích hợp Vue.js vào Laravel và làm một ứng dụng căn bản

Cách tích hợp Vue.js vào Laravel và làm một ứng dụng căn bản

Cách dùng Long polling trong Laravel để cải thiện trải nghiệm

Cách dùng Long polling trong Laravel để cải thiện trải nghiệm

Dùng Server-Sent Events trong Laravel để làm ứng dụng realtime

Dùng Server-Sent Events trong Laravel để làm ứng dụng realtime

Cách dùng Socket.io trong Laravel để tạo ứng dụng realtime

Cách dùng Socket.io trong Laravel để tạo ứng dụng realtime

Laravel WebSockets, các bước tạo WebSockets trong Laravel

Laravel WebSockets, các bước tạo WebSockets trong Laravel

Real-time web applications là gì ? Tầm quan trọng  trong Laravel

Real-time web applications là gì ? Tầm quan trọng trong Laravel

Cách tạo Database Testing trong Laravel

Cách tạo Database Testing trong Laravel

Cách dùng Browser Testing (Laravel Dusk) trong Laravel

Cách dùng Browser Testing (Laravel Dusk) trong Laravel

Top