Mục Lục
Mục Lục
Hướng dẫn cài đặt môi trường [Bài Viết] Hướng dẫn cài composer [Bài Viết] Hướng dẫn tạo dự án Laravel đầu tay. [Bài Viết] Hướng dẫn cấu hình cơ sở dữ liệu và bật chức năng auth có sẵn trong Laravel [Bài Viết] Hướng dẫn cài theme Acacha AdminLTE cho Laravel [Bài Viết] Hướng dẫn tắt debug khi upload dự án laravel lên HOST Video Hướng dẫn cài đặt môi trường + tạo dự án + Tìm hiểu Route qua ví dụ - Lập trình Laravel Video Hướng dẫn cài đặt dự án Laravel + Cài đặt chức năng Auth (login + register) trong Laravel Tìm hiểu Route & View & Controller Video Tìm hiểu Route trong Laravel + Học lập trình laravel qua ví dụ Hello World, ax+b=0, Hiển thị danh sách sinh viên Video Tìm hiểu Route qua ví dụ quản lý sinh viên - Laravel Video Hướng dẫn tìm hiểu Route - Controller - View trong Laravel qua ví dụ Video Lập trình Laravel - Truyền dữ liệu từ Controller qua View - Ví dụ Hello World trong Laravel Phần 1 Video Lập trình Laravel - Truyền dữ liệu từ Controller qua View - Ví dụ Tính giai thừa trong Laravel Phần 2 Video Lập trình Laravel - Truyền dữ liệu từ Controller qua View - Ví dụ hiển thị danh sách sinh viên trong Laravel Phần 3 Tìm hiểu route + truyền dữ liệu từ controller tới view qua bài quản lý khách sạn- Lập trình Laravel Tìm hiểu route + truyền dữ liệu từ controller tới view qua bài quản lý sản phẩm - Lập trình Laravel Tìm hiểu Route - Controller - View trong Laravel Route: Giải phương trình bậc 2 (ax2 + bx + c = 0) bằng Laravel - Lập trình laravel BÀI TẬP LARAVEL CƠ BẢN - Lập Trình Laravel - Route → Controller → View QUẢN LÝ SINH VIÊN (KHÔNG DÙNG DATABASE) - Khóa học lập trình Laravel GET/POST trong Laravel Video Tìm hiểu GET/POST trong Laravel qua ví dụ nhập thông tin người dùng - Lập trình Laravel Quản lý sinh viên bằng Laravel - Lập trình Laravel Video Quản lý sinh viên bằng Laravel - Lập trình Laravel Layout - Blade Video Tìm hiểu Route - Blade (nhung css/js/photos) - cú pháp Blade - Xử lý GET/POST trong Laravel Video Hướng dẫn tìm hiểu layout trong Laravel - qua ví dụ tạo website tin tức - Lập Trình Laravel Bài Tập Học Layout thông qua clone website - Creative Theme Bootstrap Free - Lập trình Laravel Kết nối CSDL - Laravel Video Hướng dẫn tìm hiểu view, migration, seeder, db - laravel - Qua ví dụ quản lý sinh viên Video Học Laravel qua ví dụ thêm & hiển thị tài khoản người dung - DB::Insert - DB::get - Paginate - Khoá Học Laravel Tìm hiểu migration trong laravel - Lập trình laravel Chương trình quản lý điểm danh Aptech - Lập trình Laravel - Lập trình PHP/Laravel Video - Chương trình quản lý điểm danh Aptech - Lập trình Laravel - Lập trình PHP/Laravel Video Bài tập quản lý sách bằng Laravel - Full Source Code quản lý sách - Lập trình Laravel Ôn tập - Chương trình quản lý sách + danh mục sách - Lập trình PHP, Laravel Website thi trắc nghiệm lập trình Aptech - Lập trình laravel - Lập trình PHP Tạo 1 POS bán hàng cho siêu thị - Supper Market - Lập trình Laravel Video - Tạo 1 POS bán hàng cho siêu thị - Supper Market - Lập trình Laravel Video Hướng dẫn tim hiểu Pagination + model qua ví dụ quản lý sinh viên - Lập trình Laravel Tìm hiểu paginate trong laravel - Quản lý sản phẩm - Lập trình Laravel Ứng dụng Quản lý Sách trong Laravel Phân quyền - Chức năng nâng cao Video - Tìm hiểu Auth trong Laravel Video Phân Quyền-Hướng dẫn viết chức năng phân quyền người dùng theo role Lâp Trình PHP/Laravel Video API Resful Laravel - Hướng dẫn tạo API Resful bằng PHP/Laravel - Khóa học lập trình PHP/Laravel [Examination] Examination & Test + Website tra cứu luật giao thông đường bộ - Lập trình PHP - Lập trình Laravel [Examination] Bài tập ôn luyện kết thúc môn - Sử dụng Laravel + Ajax Thực Chiến: Web bán hàng Video Hướng dẫn tạo dự án super market - phần 1 - Laravel Video Hướng dẫn tạo dự án super market - phần 2- laravel Video Tạo giở hàng - học lập trình laravel qua project- Phần 3 - laravel Khóa Học Lập Trình Laravel Thực Chiến Video Source Code Dự Án - Thực Chiến Web Bán Hàng Video Phần 1 | Laravel | Web bán hàng - Giới thiệu công nghệ Video Phần 2 | Phân tích thiết kế CSDL (database) | Web bán hàng PHP/MySQL Video Phần 3 | Phân tích thiết kế CSDL (database) | Web bán hàng PHP/MySQL Video Phần 4 | Laravel | Thiết kế web bán hàng - Cài đặt dự án & Authetication & Migration CSDL Video Phần 5 | Laravel | Thực Chiến - Web Bán Hàng -Tích hợp template và chỉnh sửa trang đăng ký-đăng nhập Video Phần 6 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng Role trong dự án Video Phần 7 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng quản lý người dung trong dự án Video Phần 8 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng quản lý danh mục Video Phần 9 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng Quản lý sản phẩm Video Phần 10 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng Quản lý tin tức Video Phần 11 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng Quản lý phản hồi Video Phần 12 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng Quản lý đơn hàng Video Phần 13 | Laravel | Thực Chiến - Web Bán Hàng - Chức năng bảo mật trong dự án Video Phần 14 | Laravel | Thực Chiến - Web Bán Hàng - Trang Chủ & Phân Layout Video Phần 15 | Laravel | Thực Chiến - Web Bán Hàng - FE Trang Sản Phẩm Video Phần 16 | Laravel | Thực Chiến - Web Bán Hàng - FE Trang Tin Tức Video Phần 17 | Laravel | Thực Chiến - Web Bán Hàng - FE Trang Liên Hệ Unlisted Video Phần 18 | Laravel | Thực Chiến - Web Bán Hàng - FE Trang Chi Tiết Tin Tức Video Phần 19 | Laravel | Thực Chiến - Web Bán Hàng - FE Chi Tiết Sản Phẩm Video Phần 20 | Laravel | Thực Chiến - Web Bán Hàng - Trang giỏ hàng Video Phần 21 | Laravel | Thực Chiến - Web Bán Hàng - Trang thanh toán & hoàn thành thanh toán Video Phần 22 | Laravel | Final | Hướng dẫn cài đặt dự án từ source code mẫu
Laravel Tutorial

[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)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:

composer require laravel/ui php artisan ui bootstrap --auth npm install && npm run dev php artisan migrate

Hoặc với Laravel Breeze (phiên bản nhẹ, hiện đại hơn):

composer require laravel/breeze --dev php artisan breeze:install npm install && npm run dev php artisan migrate

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:

IDRole NameQuyền hạn
1AdminToàn quyền quản lý
2LibrarianQuản lý sách, mượn/trả sách
3StudentXem 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:

Schema::create('roles', function (Blueprint $table) { $table->id(); $table->string('name'); // Admin, Librarian, Student $table->timestamps(); });

Cập nhật bảng users:

Schema::table('users', function (Blueprint $table) { $table->unsignedBigInteger('role_id')->default(3); // Mặc định là Student $table->foreign('role_id')->references('id')->on('roles'); });

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

php artisan make:middleware AdminMiddleware php artisan make:middleware LibrarianMiddleware php artisan make:middleware StudentMiddleware

Cấu hình logic trong middleware

AdminMiddleware.php:

public function handle($request, Closure $next) { if (auth()->user()->role->name !== 'Admin') { return redirect('/home')->with('error', 'Bạn không có quyền truy cập!'); } return $next($request); }

LibrarianMiddleware.php:

public function handle($request, Closure $next) { if (!in_array(auth()->user()->role->name, ['Admin', 'Librarian'])) { return redirect('/home')->with('error', 'Chỉ thủ thư hoặc admin mới được truy cập!'); } return $next($request); }

StudentMiddleware.php:

public function handle($request, Closure $next) { if (auth()->user()->role->name !== 'Student') { return redirect('/home'); } return $next($request); }

Đăng ký middleware

Trong file app/Http/Kernel.php, thêm vào:

protected $routeMiddleware = [ 'admin' => \App\Http\Middleware\AdminMiddleware::class, 'librarian' => \App\Http\Middleware\LibrarianMiddleware::class, 'student' => \App\Http\Middleware\StudentMiddleware::class, ];

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.

// Public routes Route::get('/', [LandingPageController::class, 'index'])->name('landing'); // Admin routes Route::middleware(['auth', 'admin'])->group(function () { Route::get('/auth/category/index', [CategoryController::class, 'index']); Route::get('/auth/category/insert', [CategoryController::class, 'create']); Route::get('/auth/book/index', [BookController::class, 'index']); Route::get('/auth/book/insert', [BookController::class, 'create']); }); // Librarian routes Route::middleware(['auth', 'librarian'])->group(function () { Route::get('/auth/order/index', [OrderController::class, 'index']); Route::get('/auth/order/insert', [OrderController::class, 'create']); });

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.

protected function create(array $data) { return User::create([ 'name' => $data['name'], 'email' => $data['email'], 'password' => Hash::make($data['password']), 'role_id' => 3, // 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 AdminLibrarian.

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 auth cho 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ụ:

protected function redirectTo() { if (Auth::user()->role->name === 'Admin') { return '/admin/dashboard'; } elseif (Auth::user()->role->name === 'Librarian') { return '/librarian/dashboard'; } return '/student/home'; }

Kết luận

Qua bài viết này, bạn đã hiểu rõ cách Laravel hỗ trợ AuthenticationAuthorization 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!



Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó

×