Laravel Authentication là gì? Xây dựng hệ thống đăng nhập chuẩn

Laravel Authentication là gì

Authentication là một trong những chức năng nền tảng của hầu hết ứng dụng web. Với Laravel, framework cung cấp sẵn nhiều thành phần hỗ trợ xác thực người dùng, từ kiểm tra email và mật khẩu đến quản lý session, bảo vệ route và đăng xuất. Thay vì tự xây dựng toàn bộ logic đăng nhập từ đầu, lập trình viên có thể tận dụng hệ thống Laravel Authentication để triển khai quy trình xác thực nhất quán và dễ mở rộng.

Laravel Authentication là gì?

Laravel Authentication là hệ thống xác thực người dùng được Laravel cung cấp nhằm xác định một người dùng có hợp lệ hay không trước khi cho phép họ truy cập các chức năng yêu cầu đăng nhập. Một quy trình Authentication cơ bản thường diễn ra như sau:

Người dùng

   ↓

Nhập email + mật khẩu

   ↓

Laravel kiểm tra thông tin

   ↓

Xác thực thành công?

   ├── Không → Trả về lỗi đăng nhập

   └── Có → Tạo trạng thái đăng nhập

                ↓

          Truy cập tài nguyên được bảo vệ

Authentication tập trung vào câu hỏi “Người dùng này là ai và thông tin đăng nhập có hợp lệ không?” Trong khi đó, Authorization tập trung vào câu hỏi “Người dùng này được phép thực hiện hành động nào?”

READ  Laravel Blade là gì? Sức mạnh của template engine trong PHP
Laravel Authentication là gì?
Laravel Authentication là gì?

Laravel Authentication hoạt động như thế nào?

Một hệ thống đăng nhập Laravel thường bao gồm các thành phần chính:

Thành phần Vai trò
User Model Đại diện cho người dùng
Database Lưu thông tin tài khoản
Authentication system Kiểm tra thông tin xác thực
Session Duy trì trạng thái đăng nhập
Middleware Bảo vệ route
Login form Nhận thông tin đăng nhập
Logout Kết thúc phiên đăng nhập

Khi người dùng gửi email và mật khẩu, Laravel xác minh thông tin với tài khoản tương ứng. Nếu hợp lệ, trạng thái xác thực được thiết lập để những request tiếp theo có thể nhận diện người dùng.

Các bước xây dựng hệ thống đăng nhập Laravel

Một hệ thống Authentication cơ bản có thể triển khai theo các bước:

  1. Chuẩn bị bảng người dùng.
  2. Cấu hình User Model.
  3. Tạo giao diện đăng nhập.
  4. Xử lý thông tin đăng nhập.
  5. Kiểm tra Authentication.
  6. Bảo vệ route bằng middleware.
  7. Xây dựng chức năng logout.

Trong thực tế, Laravel còn cung cấp các starter kit giúp tạo nhanh phần giao diện và logic xác thực thay vì phải xây dựng toàn bộ từ đầu. Truy cập website Học Laravel để biết thêm nhiều thông tin hữu ích.

1. Chuẩn bị User Model và database

Laravel thường sử dụng Model User để đại diện cho tài khoản người dùng.

Ví dụ:

use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable

{

    protected $fillable = [

        ‘name’,

        ’email’,

        ‘password’,

    ];

}

Database cần có bảng lưu tài khoản, phổ biến là bảng users.

Một tài khoản cơ bản có thể gồm:

READ  Hướng Dẫn Chi Tiết Cách chạy Raw Queries Trong Laravel

users

├── id

├── name

├── email

├── password

├── created_at

└── updated_at

Trong đó, mật khẩu không được lưu dưới dạng văn bản thuần túy. Laravel cung cấp cơ chế hashing để lưu mật khẩu dưới dạng đã băm.

2. Tạo giao diện đăng nhập

Form đăng nhập thường chứa email và mật khẩu:

<form method=”POST” action=”/login”>

    @csrf

    <input

        type=”email”

        name=”email”

        placeholder=”Email”

        required

    >

    <input

        type=”password”

        name=”password”

        placeholder=”Mật khẩu”

        required

    >

    <button type=”submit”>

        Đăng nhập

    </button>

</form>

Laravel sử dụng CSRF protection cho các request thay đổi trạng thái. Với form POST, cần sử dụng:

@csrf

để tạo CSRF token hợp lệ.

3. Xử lý đăng nhập

Phần xử lý đăng nhập có nhiệm vụ:

  • Nhận dữ liệu từ form.
  • Validate email và password.
  • Kiểm tra thông tin tài khoản.
  • Tạo trạng thái Authentication nếu thông tin hợp lệ.
  • Trả lỗi nếu đăng nhập thất bại.

4. Validate dữ liệu đăng nhập

Không nên đưa trực tiếp dữ liệu người dùng nhập vào quá trình xác thực mà không kiểm tra.

Laravel hỗ trợ validate ngay trong request:

$credentials = $request->validate([

    ’email’ => [‘required’, ’email’],

    ‘password’ => [‘required’],

]);

Trong đó:

  • required: trường bắt buộc phải có dữ liệu.
  • email: giá trị phải có định dạng email hợp lệ.

Validation giúp giảm dữ liệu không hợp lệ trước khi xử lý Authentication.

5. Kiểm tra trạng thái đăng nhập

Sau khi Authentication thành công, có thể kiểm tra người dùng hiện tại bằng:

Auth::check();

Ví dụ:

if (Auth::check()) {

    // Người dùng đã đăng nhập

}

Để lấy thông tin user hiện tại:

$user = Auth::user();

Hoặc:

$id = Auth::id();

Các phương thức này thường được sử dụng khi cần lấy thông tin tài khoản đang đăng nhập.

READ  Laravel Dependency Injection là gì? Lợi ích và cách áp dụng
Kiểm tra trạng thái đăng nhập
Kiểm tra trạng thái đăng nhập

6. Bảo vệ route bằng Middleware

Không phải route nào cũng nên cho phép người dùng truy cập tự do.

Ví dụ, trang dashboard chỉ dành cho người đã đăng nhập:

Route::get(‘/dashboard’, function () {

    return view(‘dashboard’);

})->middleware(‘auth’);

Khi người dùng chưa đăng nhập truy cập route này, middleware auth sẽ kiểm tra trạng thái Authentication trước khi cho phép request tiếp tục.

Có thể áp dụng middleware cho một nhóm route:

Route::middleware(‘auth’)->group(function () {

    Route::get(‘/dashboard’, [DashboardController::class, ‘index’]);

    Route::get(‘/profile’, [ProfileController::class, ‘index’]);

});

Cách này phù hợp khi nhiều trang đều yêu cầu đăng nhập.

7. Xây dựng chức năng Logout

Đăng xuất có nhiệm vụ kết thúc trạng thái Authentication của người dùng.

use Illuminate\Http\Request;

use Illuminate\Support\Facades\Auth;

public function logout(Request $request)

{

    Auth::logout();

    $request->session()->invalidate();

    $request->session()->regenerateToken();

    return redirect(‘/’);

}

Quy trình trên gồm ba bước chính:

Auth::logout();

Đăng xuất tài khoản.

$request->session()->invalidate();

Hủy session hiện tại.

$request->session()->regenerateToken();

Tạo lại CSRF token.

Đây là cách xử lý logout phù hợp cho hệ thống Authentication sử dụng session.

Kết luận

Laravel Authentication là hệ thống xác thực giúp ứng dụng xác định người dùng và duy trì trạng thái đăng nhập. Một quy trình đăng nhập Laravel cơ bản thường gồm validate thông tin → xác thực tài khoản → regenerate session → bảo vệ route bằng middleware → logout và hủy session. Với những ứng dụng thông thường, có thể sử dụng các thành phần Authentication và starter kit của Laravel để rút ngắn thời gian phát triển. Khi xây dựng API hoặc hệ thống có yêu cầu xác thực đặc biệt, cần lựa chọn cơ chế Authentication phù hợp với loại client và kiến trúc ứng dụng.

Quan trọng nhất, Authentication chỉ giải quyết vấn đề xác thực người dùng. Nếu ứng dụng có nhiều vai trò như Admin, Manager, User hoặc các quyền thao tác khác nhau, cần triển khai thêm Authorization để kiểm soát chính xác những tài nguyên và hành động mà từng người dùng được phép thực hiện.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *