[Video] - Tìm hiểu Auth trong Laravel
Authentication trong Laravel
- Ung dung mo phong quan ly thư viện
Phân tích chức năng
- Frontend
- Landing page => Hiển thị danh sách quán sách => tất cả người dùng đều có thể xem được
- auth/index => Public => Auth/LandingPageController
- Admin
- Quản lý danh mục => Tài login mới xem được
- Danh sách => auth/category/index => All Role
- View thêm => auth/category/insert => Admin & Librarier
- Quản lý sách => chỉ admin hay thủ thư mới được xem
- Danh sách => auth/book/index => All Role
- View thêm => auth/book/insert => Admin & Librarier
- Quản mượn sách => chỉ admin hay thủ thư mới được xem
- Danh sách => auth/order/index => All Role
- View thêm => auth/order/insert => Admin & Librarier
- User
- Role:
- Admin
- Librarier
- Student
- B1. Sua database
user => them 1 code role_id
role => id & role name => Admin, Librarier, Student
- B2. Tao 3 middleware
- admin => kiem tra dung admin => redirect home page
- librarier => kiem tra dung quyen library => redirect home page
- student => ...
Mở bài
Trong bất kỳ ứng dụng web nào, xác thực (Authentication) luôn là một phần cốt lõi đảm bảo an toàn cho hệ thống. Laravel – một trong những framework PHP mạnh mẽ và phổ biến nhất hiện nay – cung cấp một cơ chế Auth cực kỳ tiện lợi, giúp lập trình viên triển khai đăng nhập, đăng ký, phân quyền người dùng chỉ trong vài phút.
Nếu bạn đang xây dựng một ứng dụng quản lý thư viện, việc kiểm soát quyền truy cập của Admin, Thủ thư (Librarian) và Sinh viên (Student) là điều không thể thiếu. Mỗi người dùng sẽ có vai trò (role) riêng, quyền hạn riêng, và Laravel giúp bạn thực hiện điều đó dễ dàng nhờ hệ thống Authentication & Authorization tích hợp sẵn.
Trong bài viết này, chúng ta sẽ cùng tìm hiểu chi tiết Auth trong Laravel, cách bật tính năng Auth chỉ bằng một lệnh, cách phân quyền theo role, và cuối cùng là ví dụ thực tế với ứng dụng quản lý thư viện – từ giao diện Landing Page đến trang quản lý Admin.
Tổng quan về Authentication trong Laravel
Laravel cung cấp sẵn một hệ thống xác thực hoàn chỉnh, bao gồm:
-
Đăng ký (Register)
-
Đăng nhập (Login)
-
Quên mật khẩu (Forgot Password)
-
Đặt lại mật khẩu (Reset Password)
-
Phân quyền truy cập (Authorization)
Điều tuyệt vời là bạn có thể bật toàn bộ chức năng này chỉ bằng một lệnh duy nhất.
Cách bật Auth trong Laravel
Tùy phiên bản Laravel mà cách kích hoạt Auth có thể khác nhau:
Đối với Laravel 9/10 trở lên:
Hoặc với Laravel Breeze (phiên bản nhẹ, hiện đại hơn):
Sau khi chạy các lệnh này, Laravel sẽ tự động tạo sẵn:
-
Giao diện đăng ký và đăng nhập.
-
Các route và controller xử lý logic xác thực.
-
Middleware
authđể bảo vệ route chỉ cho người dùng đã đăng nhập.
Vậy là chỉ trong vài phút, bạn đã có hệ thống đăng nhập/đăng ký hoàn chỉnh, sẵn sàng tích hợp vào bất kỳ ứng dụng nào.
Phân tích mô hình ứng dụng quản lý thư viện
Để hiểu rõ hơn về Auth trong Laravel, ta sẽ xây dựng ứng dụng mô phỏng quản lý thư viện, nơi mỗi loại người dùng có quyền truy cập khác nhau.
Cấu trúc tổng quan
-
Frontend (Public):
-
Trang Landing Page: hiển thị danh sách các quán sách.
-
Mọi người dùng đều có thể xem, không cần đăng nhập.
-
Controller:
Auth/LandingPageController.
-
-
Admin (Private):
-
Quản lý danh mục, sách, và đơn mượn.
-
Chỉ người dùng đăng nhập mới truy cập được.
-
Một số chức năng chỉ dành cho Admin hoặc Librarian.
-
Thiết kế phân quyền người dùng
Các vai trò (Role)
Ứng dụng có 3 loại vai trò chính:
| ID | Role Name | Quyền hạn |
|---|---|---|
| 1 | Admin | Toàn quyền quản lý |
| 2 | Librarian | Quản lý sách, mượn/trả sách |
| 3 | Student | Xem và mượn sách |
Bước 1: Cập nhật Database
Ta sẽ thêm bảng roles và cập nhật bảng users để chứa thông tin phân quyền.
Bảng roles:
Cập nhật bảng users:
Bước 2: Tạo Middleware cho từng vai trò
Laravel hỗ trợ tạo middleware để kiểm tra quyền truy cập của người dùng trước khi truy cập vào một route.
Tạo middleware
Cấu hình logic trong middleware
AdminMiddleware.php:
LibrarianMiddleware.php:
StudentMiddleware.php:
Đăng ký middleware
Trong file app/Http/Kernel.php, thêm vào:
Bước 3: Áp dụng Middleware cho route
Laravel cho phép bạn bảo vệ từng route bằng middleware tương ứng.
Như vậy, mỗi người dùng chỉ được phép truy cập vào khu vực được cấp quyền tương ứng.
Bước 4: Tích hợp giao diện Auth
Khi sử dụng Laravel Breeze hoặc Laravel UI, hệ thống sẽ tự động sinh ra các file view trong thư mục resources/views/auth, bao gồm:
-
login.blade.php -
register.blade.php -
forgot-password.blade.php -
verify-email.blade.php
Bạn có thể dễ dàng tùy chỉnh lại giao diện để phù hợp với theme của hệ thống thư viện.
Ví dụ: thêm logo thư viện, đổi màu sắc, hoặc hiển thị tên vai trò sau khi đăng nhập.
Bước 5: Tùy chỉnh Controller để xử lý Role
Khi người dùng đăng ký, bạn có thể tự động gán role mặc định là Student.
Hoặc nếu Admin muốn tạo tài khoản Librarian, bạn có thể thêm form chọn Role vào trang đăng ký Admin.
Một số ví dụ thực tế trong ứng dụng
1. Giao diện Landing Page
-
Hiển thị danh sách các đầu sách cho tất cả người dùng, kể cả chưa đăng nhập.
-
Cho phép xem chi tiết sách, nhưng chỉ người dùng đăng nhập mới có thể mượn.
2. Trang quản lý danh mục (Category Management)
-
Chỉ hiển thị nếu người dùng đã đăng nhập.
-
Chức năng thêm/sửa/xóa danh mục chỉ dành cho Admin và Librarian.
3. Trang quản lý mượn sách (Order Management)
-
Chỉ Admin và Librarian mới có quyền truy cập.
-
Sinh viên chỉ có thể xem các đơn mượn của chính mình.
Một số lời khuyên khi sử dụng Auth trong Laravel
-
Không nên tự viết hệ thống Auth từ đầu, vì Laravel đã tối ưu đầy đủ về bảo mật (mã hóa mật khẩu, CSRF, session…).
-
Luôn sử dụng middleware
authcho những route yêu cầu đăng nhập. -
Kết hợp Policy hoặc Gate nếu bạn muốn kiểm soát chi tiết hơn (ví dụ: chỉ cho phép chỉnh sửa bài viết của chính mình).
-
Tùy chỉnh Redirect để người dùng được chuyển đến trang phù hợp với vai trò của họ sau khi đăng nhập.
Ví dụ:
Kết luận
Qua bài viết này, bạn đã hiểu rõ cách Laravel hỗ trợ Authentication và Authorization mạnh mẽ đến mức nào. Chỉ với vài dòng lệnh, hệ thống đăng nhập, đăng ký, phân quyền người dùng đã sẵn sàng, giúp bạn tiết kiệm hàng giờ lập trình.
Ứng dụng mô phỏng quản lý thư viện ở trên là ví dụ điển hình:
-
Người dùng bình thường có thể xem sách.
-
Thủ thư có thể quản lý mượn trả.
-
Admin có quyền điều hành toàn bộ hệ thống.
Nhờ Laravel, việc triển khai này trở nên cực kỳ đơn giản và an toàn.
Nếu bạn đang bắt đầu một dự án web mới, hãy mạnh dạn sử dụng Auth trong Laravel – không chỉ để bảo mật, mà còn để mang lại trải nghiệm người dùng chuyên nghiệp và nhất quán.
👉 Hãy thử tạo dự án Laravel mới, chạy lệnh
php artisan breeze:install, và tự tay khám phá sức mạnh của Auth trong Laravel ngay hôm nay!