Laravel UI

Laravel UI cung cấp một cách nhanh chóng để mở rộng các route và view cần thiết cho chức năng Authentication và bao gồm các cài đặt liên quan cho Bootstrap, React hoặc Vue.

Mặc dù nó vẫn tiếp tục hoạt động với phiên bản mới nhất của Laravel, nhưng bạn nên cân nhắc sử dụng Laravel Breeze cho các dự án mới. 

Hoặc, bạn muốn có một thư viện hỗ trợ mạnh mẽ hơn nữa, bạn có thể xem xét Laravel Jetstream.

Bạn có thể tìm hiểu thêm tại đây: https://github.com/laravel/ui

Thực hiện Authentication trong Laravel bằng Laravel UI

Trong bài viết này tôi sẽ hướng dẫn các bạn cách sử dụng Laravel UI để thực hiện chức năng Authentication trong dự án Laravel. (Phiên bản được áp dụng trong bài viết là Laravel 10).

Khởi tạo dự án Laravel

Đầu tiên, chúng ta sẽ khởi tạo dự án Laravel mới. Bạn có thể làm điều này bằng cách sử dụng lệnh sau:

composer create-project laravel/laravel laravel_ui

Bước tiếp theo, chúng ta sẽ tiến hành kết nối đến cơ sở dữ liệu bằng cách chỉnh sửa các thông tin sau trong tập tin .env:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_ui
DB_USERNAME=root
DB_PASSWORD=

Cuối cùng, chúng ta sẽ sử dụng lệnh sau để tạo ra các bảng mặc định trong Laravel:

php artisan migrate

Cài đặt Laravel UI

Đầu tiên, để bắt đầu, chúng ta cần cài đặt thư viện Laravel UI bằng cách chạy lệnh sau:

composer require laravel/ui

Tiếp theo, chúng ta sẽ sử dụng lệnh sau để tạo giao diện cho chức năng Authentication trong dự án Laravel của bạn:

1. Nếu dự án Laravel của bạn sử dụng Bootstrap, thì bạn hãy sử dụng lệnh sau:

php artisan ui bootstrap --auth

2. Nếu dự án Laravel của bạn sử dụng React, thì bạn hãy sử dụng lệnh sau:

php artisan ui react --auth

3. Nếu dự án Laravel của bạn sử dụng Vue, thì bạn hãy sử dụng lệnh sau:

php artisan ui vue --auth

Để bài hướng dẫn này trở nên đơn giản hơn, tôi sẽ thực hiện chức năng Authentication trong Laravel với Bootstrap.

Tiếp theo, chúng ta sẽ tiến hành cài đặt các thư viện NPM cần thiết. Để thực hiện việc này, bạn hãy chạy lệnh sau:

npm install

Ngoài ra, chúng ta nên cài đặt thêm thư viện resolve-url-loader để hỗ trợ chúng ta build SCSS thuận lợi hơn:

npm install resolve-url-loader@^4.0.0 --save-dev --legacy-peer-deps

Để biên dịch Assets, chúng ta cần phải sử dụng lệnh sau:

npm run build

Tiếp theo, chúng ta sẽ bắt đầu cài đặt thêm chức năng Email Verification, bạn hãy mở tập tin User.php nằm trong thư mục App/Models và chỉnh sửa như sau:

<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
...

class User extends Authenticatable implements MustVerifyEmail
{
    ...
}

Sau đó, bạn hãy mở tập tin HomeController.php nằm trong thư mục app\Http\Controllers và chỉnh sửa như sau:

<?php

namespace App\Http\Controllers;

...

class HomeController extends Controller
{
    ...
    public function __construct()
    {
        $this->middleware('auth', 'verified');
    }
    ...
}

Tiếp theo, bạn mở tập tin web.php nằm trong thư mục routes và chỉnh sửa như sau:

<?php

use Illuminate\Support\Facades\Route;

...

Auth::routes(['verify' => true]);

Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');

Tip Auth::routes() Parameters

Hầu hết chúng ta đều quen thuộc với phương thức Auth::routes(), một tính năng quan trọng từ gói Laravel UI.

Nhưng có bao giờ bạn tự hỏi, liệu có thể tùy chỉnh phương thức này để kích hoạt hoặc vô hiệu hóa các Route cụ thể của Laravel UI thông qua parameters không?

Dưới đây là danh sách các parameters và giá trị mặc định của Auth::routes() trong Laravel UI:

Auth::routes([
    'login'    => true,  # Bật/Tắt chức năng login của Laravel UI
    'logout'   => true,  # Bật/Tắt chức năng logout của Laravel UI
    'register' => true,  # Bật/Tắt chức năng register của Laravel UI
    'reset'    => true,  # Bật/Tắt chức năng reset của Laravel UI
    'confirm'  => false, # Bật/Tắt chức năng confirm của Laravel UI
    'verify'   => false, # Bật/Tắt chức năng verify của Laravel UI
]);

Kết quả của công việc bạn đã làm đang chờ bạn khám phá!

Sau khi đã hoàn thành các bước trên, giờ là lúc để chúng ta sẽ cùng nhau khám phá thành quả công sức của mình.

Trước khi chúng ta bắt đầu trải nghiệm tính năng chức năng Authentication sử dụng Laravel UI trong Laravel.

Chúng ta sẽ sử dụng Laravel Tinker  để tạo dữ liệu bảng users để thực hiện chức năng Login nếu bạn chưa thực hiện chức năng đăng kí tạo dữ liệu bảng users:

php artisan tinker

Tiếp theo, bạn hãy sử dụng tiếp lệnh sau để bắt đầu tạo dữ liệu bảng users:

\App\Models\User::factory(1)->create();

Login

Để thực hiện chức năng Login trong Laravel UI, bạn hãy truy cập vào URL bên dưới:

http://127.0.0.1:8000/login

Register

Để thực hiện chức năng Register trong Laravel UI, bạn hãy truy cập vào URL bên dưới:

http://127.0.0.1:8000/register

Reset Password

Để thực hiện chức năng Reset Password trong Laravel UI, bạn hãy truy cập vào URL bên dưới:

http://127.0.0.1:8000/password/reset

CÓ THỂ BẠN QUAN TÂM

Laravel Custom Request

Laravel Custom Request

Nếu bạn có một form để người dùng nhập dữ liệu và bạn muốn kiểm tra dữ liệu đầu vào trước khi lưu xuống database chẳng hạn thì bạn có 2 cách sau đây: Cách 1: Bạn thêm validate trực tiếp vào hàm sto...

Generate PDF with Header and Footer on every page in Laravel

Generate PDF with Header and Footer on every page in Laravel

Hôm nay, trong bài viết này mình sẽ chia sẻ với các bạn cách dompdf mà header và footer sẽ được hiển thị ở tất cả các trang. Đây cũng là một vấn đề khá phổ biến, khi chúng ta phát triển các tính năng...

ZSH-Artisan CLI and Docker: The Perfect Match for Laravel Development

ZSH-Artisan CLI and Docker: The Perfect Match for Laravel Development

Zsh Zsh viết tắt của “ Z Shell ” là một shell nâng cao cho hệ thống Unix và Linux. Nó được phát triển nhằm cung cấp các tính năng và khả năng cao hơn so với shell mặc định trên hầu hết các hệ thố...

Laravel User Authentication

Laravel User Authentication

Trong hướng dẫn này, tôi sẽ hướng dẫn bạn xây dựng chức năng đăng nhập trong Laravel. Công bằng mà nói thì bạn có thể sử dụng Laravel UI hoặc JetStream để tự động tạo ra chức năng đăng nhập trong Lara...

Laravel Upload File Using Trait

Laravel Upload File Using Trait

Hiện nay, đa số các dự án đều có chức năng upload file, nên tôi đã thử xây dựng một lớp Trait Upload File, để chúng ta dễ dàng sao chép qua các dự án khác để sử dụng, nhằm rút ngắn thời gian phát triể...

Laravel Socialite Login With Github

Laravel Socialite Login With Github

GitHub GitHub là một nền tảng phát triển phần mềm trực tuyến. Nó được sử dụng để lưu trữ, theo dõi và cộng tác trong các dự án phần mềm. Nó giúp các nhà phát triển dễ dàng chia sẻ các tập tin mã...

Pipeline Design Pattern in Laravel

Pipeline Design Pattern in Laravel

Pipeline Design Pattern là nơi mà các dữ liệu được chuyển qua một chuỗi các nhiệm vụ hoặc giai đoạn. Pipeline hoạt động giống như một chuỗi dây chuyền lắp ráp, nơi dữ liệu được xử lý và sau đó, sẽ...

Laravel Middlewares

Laravel Middlewares

Middleware cung cấp một cơ chế thuận tiện để lọc các yêu cầu HTTP gửi đến ứng dụng bạn. Nó là một lớp trung gian nằm giữa request và controller. Bạn có thể thêm các xử lý logic trước khi gửi đến contr...

Eloquent Methods: whereDoesntHaveRelation and whereMorphDoesntHaveRelation

Eloquent Methods: whereDoesntHaveRelation and whereMorphDoesntHaveRelation

New Laravel 11.37: Eloquent Methods Laravel cung cấp cho chúng ta khả năng xây dựng các truy vấn dữ liệu mạnh mẽ với Eloquent ORM, giúp chúng ta có thể xử lý các truy vấn cơ sở dữ liệu phức tạp một...

ManhDanBlogs