Authentication trong laravel là gì, hoạt động của nó như thế nào

Như anh em cũng biết, bất kỳ hệ thống nào cũng cần có xác thực khi thực hiện một hoặc nhiều hành vi mà hệ thống cho phép. Để tiếp tục series Laravel và những điều thú vị, hôm nay mình sẽ giới thiệu với các bạn về Authentication trong Laravel. Laravel giúp cho việc thực hiện xác thực vô cùng đơn giản. Bạn sẽ không ngờ được rằng Laravel đã xây dựng sẵn, chúng ta chỉ việc dùng và tùy chỉnh theo nhu cầu của mình. Nào, cùng bắt tay tìm hiểu nhé!

1. Giới Thiệu

Trước khi đi sâu vào cách sử dụng Authentication, Hoclaravel.vn tổng hợp qua phần cấu hình liên quan. Trong Laravel, có một file cấu hình rất quan trọng đó là config/auth.php.

file cấu hình config_auth.php

Hệ Thống Xác Thực

Hệ thống xác thực Authentication của Laravel được xây dựng dựa trên hai thành phần cốt lõi: guardprovider.

Guards

“Guard” giúp cung cấp logic xác thực người dùng. Trong Laravel, hai loại guard phổ biến là session guard và token guard.

  • Session Guard: Duy trì trạng thái người dùng trong từng request thông qua cookie.
  • Token Guard: Xác thực người dùng bằng cách kiểm tra token hợp lệ trong mỗi request.
READ  Cách Hoạt Động Session Trong Laravel, Cấu Hình & Ứng Dụng Thực Tế

Guard xác định cách thức xác thực, và điều này có nghĩa là bạn có thể triển khai một guard mà chỉ cần kiểm tra sự có mặt của thông tin trong headers của request để xác thực người dùng.

Authentication trong Laravel - Thầy Long Web

Providers

Nếu Guards định nghĩa logic xác thực, thì Providers lấy dữ liệu người dùng từ backend. Laravel hỗ trợ truy suất người dùng thông qua Eloquent hoặc Query Builder vào database.

Nếu bạn có nhiều bảng người dùng hoặc mô hình khác nhau, bạn có thể cấu hình nhiều nguồn để đại diện cho các mô hình/bảng khác nhau. Ví dụ, nếu bạn muốn sử dụng mô hình User trong namespace khác như App\Model, bạn có thể thay đổi như sau:

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

Khi bạn đăng ký tài khoản trong hệ thống, trường password phải có độ dài tối thiểu 6 ký tự và tối đa 255 ký tự. Trường remember_token nên được thiết lập là nullable() để hỗ trợ chức năng “Remember Me”.

2. Làm Quen Với Authentication Trong Laravel

Authentication trong Laravel - Thầy Long Web

Laravel tự động tạo ra một số controller để quản lý Authentication trong dự án của bạn. Các controller này nằm trong namespace App\Http\Controllers\Auth, bao gồm:

  • ForgotPasswordController: Xử lý chức năng khi người dùng quên mật khẩu. Hệ thống sẽ yêu cầu người dùng nhập email để gửi mật khẩu mới.
  • LoginController: Quản lý chức năng đăng nhập, giúp người dùng đăng nhập bằng email và mật khẩu.
  • RegisterController: Xử lý chức năng đăng ký thành viên mới.
  • ResetPasswordController: Quản lý chức năng thay đổi mật khẩu của người dùng.
READ  Hướng Dẫn Cài Đặt Homestead Laravel

Bắt Đầu Xác Thực

Để thực hiện công việc xác thực, bạn chỉ cần chạy hai dòng lệnh sau:

php artisan make:auth
php artisan migrate

Lệnh make:auth sẽ sinh ra cấu trúc controller và route cần thiết cho việc xác thực. Lệnh migrate sẽ tạo ra hai bảng userspassword_resets.

Sau khi chạy xong, bạn sẽ thấy trong file routes/web.php có thêm dòng code sau:

Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');

Điều này có nghĩa là hệ thống đã tự động sinh ra các routes cho việc login, logout, register, forgot password. Bạn cũng có thể sử dụng lệnh php artisan route:list để xem thông tin chi tiết về các route này.

3. Tìm Hiểu Chi Tiết Về Các Controller

Là một lập trình viên, hiểu rõ về từng controller là vô cùng cần thiết. Cùng mình điểm qua từng controller và chức năng của chúng.

ForgotPasswordController

Controller này cho phép người dùng khôi phục mật khẩu. Người dùng sẽ nhập địa chỉ email của mình, và nếu email đó hợp lệ, hệ thống sẽ gửi một link để reset mật khẩu.

LoginController

Controller này xử lý quá trình đăng nhập. Người dùng nhập email và mật khẩu. Nếu thông tin hợp lệ, họ sẽ được chuyển hướng đến trang chính của ứng dụng.

RegisterController

Controller này cho phép người dùng đăng ký tài khoản mới. Khi đăng ký, hệ thống sẽ kiểm tra tính hợp lệ của các thông tin đã nhập trước khi lưu vào database.

ResetPasswordController

Controller này cho phép người dùng đặt lại mật khẩu của mình. Họ sẽ nhận được một link từ email để thiết lập mật khẩu mới.

READ  Route laravel - Cách đặt tên và nhóm route (Route Group)

4. Tùy Chỉnh Authentication

Tùy chỉnh Authentication trong Laravel rất đơn giản và linh hoạt. Bạn có thể thay đổi cấu hình trong file config/auth.php để phù hợp với yêu cầu dự án. Dưới đây là một số điểm mà bạn có thể tùy chỉnh:

  • Thay đổi driver từ eloquent sang database nếu bạn muốn truy suất dữ liệu từ một bảng cụ thể.
  • Thêm nhiều guard và provider nếu bạn có nhiều loại người dùng và cần xác thực khác nhau.

Ví Dụ Cụ Thể

Giả sử bạn muốn sử dụng database cho provider, bạn có thể cấu hình như sau:

'providers' => [
    'users' => [
        'driver' => 'database',
        'table' => 'users',
    ],
],

Bên cạnh đó, bạn cũng có thể thêm nhiều guard. Ví dụ, bạn có thể tạo một guard riêng cho người dùng admin:

'guards' => [
    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
],
'providers' => [
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Admin::class,
    ],
],

5. Kết Luận

Authentication trong Laravel là một công cụ vô cùng mạnh mẽ và linh hoạt. Với các thành phần như guard và provider, bạn có thể dễ dàng tùy chỉnh xác thực theo nhu cầu của dự án. Laravel đã cung cấp mọi thứ bạn cần để xây dựng một hệ thống xác thực hoàn chỉnh với rất ít nỗ lực.

Hy vọng bài viết này sẽ giúp bạn nắm bắt được cách sử dụng Authentication trong Laravel. Nếu bạn có bất kỳ câu hỏi nào, đừng ngần ngại để lại câu hỏi ở dưới nhé. Chúc các bạn thành công trong việc phát triển ứng dụng với Laravel!

Để 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 *