Authentication Trong Laravel

Authentication theo từ điển là một hành động xác  thực một cái gì đó có được hoạt động tiếp hay không hay dừng lại. Authentication trong Laravel cũng có ý nghĩa tương tự. Vậy thì Authentication Laravel là gì và cách nó hoạt động ra sao chúng ta cùng tìm hiểu nhé! 

1. Authentication là gì?

Authentication (Xác thực) là quá trình xác định thông tin đăng nhập của người dùng. Trong các ứng dụng web, xác thực được quản lý bởi các phiên lấy các tham số đầu vào như email hoặc tên người dùng và mật khẩu để nhận dạng người dùng. Nếu các thông số này khớp, người dùng được cho là đã được xác thực.

2. Authentication trong Laravel.

Authentication trong Laravel cũng có tác dụng xác thực như vậy thế nhưng nó hoạt động như thế nào chúng ta cùng xem xét ở phần dưới nhé. Đầu tiên các bạn hãy mở tệp tin auth.php theo đường dẫn config/auth.php ra và xem:

<?php
return [
    /*
    |--------------------------------------------------------------------------
    | Authentication Defaults
    |--------------------------------------------------------------------------
    |
    | This option controls the default authentication "guard" and password
    | reset options for your application. You may change these defaults
    | as required, but they're a perfect start for most applications.
    |
    */

    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],
    /*
    |--------------------------------------------------------------------------
    | Authentication Guards
    |--------------------------------------------------------------------------
    |
    | Next, you may define every authentication guard for your application.
    | Of course, a great default configuration has been defined for you
    | here which uses session storage and the Eloquent user provider.
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | Supported: "session", "token"
    |
    */
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],


        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
    ],
    /*
    |--------------------------------------------------------------------------
    | User Providers
    |--------------------------------------------------------------------------
    |
    | All authentication drivers have a user provider. This defines how the
    | users are actually retrieved out of your database or other storage
    | mechanisms used by this application to persist your user's data.
    |
    | If you have multiple user tables or models you may configure multiple
    | sources which represent each model / table. These sources may then
    | be assigned to any extra authentication guards you have defined.
    |
    | Supported: "database", "eloquent"
    |
    */
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],


        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],
    /*
    |--------------------------------------------------------------------------
    | Resetting Passwords
    |--------------------------------------------------------------------------
    |
    | You may specify multiple password reset configurations if you have more
    | than one user table or model in the application and you want to have
    | separate password reset settings based on the specific user types.
    |
    | The expire time is the number of minutes that the reset token should be
    | considered valid. This security feature keeps tokens short-lived so
    | they have less time to be guessed. You may change this as needed.
    |
    */
    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
            'throttle' => 60,
        ],
    ],

Đoạn code dài vãi phải không nào thế nhưng chú thích là chủ yếu chúng ta chỉ cần tập trung vào đoạn code sau 

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

Đây chính là đoạn xác lập phương thức, và nguồn dữ liệu được lấy ra để xác thực trong Laravel.

Giải thích đoạn code trên:

  • Driver: Thiết lập xác định phương thức lấy thông tin người dùng để xác thực, mặc định sử dụng eloquent, tuy nhiên còn một sự lựa chọn khác là database và thậm chí chúng ta cũng có thể tạo thêm một driver của riêng mình.
  • Model: Thiết lập nguồn dữ liệu lấy ra từ đâu.Mặc định Laravel chọn là moder User (local: App\User.php). Thông số này bạn có thể chỉnh thành name model của bạn.

3. Tạo Auth Login Trong Laravel.

Ở các bản Laravel 6x trở về trước chúng ta thường dùng lệnh sau để tạo Auth Login Trong Laravel 

php artisan make:auth

Thế nhưng từ bản 6x trở về sau nếu sử dụng lệnh này luôn chúng ta sẽ gặp lỗi  Command "make:auth" is not defined.

 Lý do là thiếu thư viện kèm theo. Vì vậy trước khi chạy lệnh này chúng ta phải cài đặt thư viện kèm theo bằng cách chạy lệnh

composer require laravel/ui --dev

Sau đó bạn cần thực thi 1 trong các lệnh sau (tùy theo stack của bạn) để để render ra view mặc định của laravel.

php artisan ui:auth
php artisan ui bootstrap --auth
// hoặc
php artisan ui vue --auth
//hoặc
php artisan ui react --auth

Trong đó bootstrap, vue hay react là UI stack mà bạn chọn. Ví dụ ở đây mình sử dụng bootstrap.

Đương nhiên chúng ta cũng cần chạy migrations để tạo db cho app. Mục đích cái này là render table user để phục vụ cho các chức năng liên quan auth 

php artisan migrate

Sau đó truy cập vào project chúng ta sẽ thấy giao diện sau:

Click vào từng nút chúng ta sẽ được điều chuyển đến các form đăng nhập, đăng ký . Những form này đều được validate  đầy đủ luôn nha.

Các bạn cứ thử đăng ký một users, đăng nhập vào hệ thống rồi vào database xem có gì ở bảng users nhé!

4. Lời Kết.

Đây chỉ là authentication trong Laravel mặc đinh vì còn khá sơ sài thế nhưng nếu muốn thay đổi 1 số thứ thì sao. Chúng mình hẹn gặp nhau trong bài tiếp theo nha. Cảm ơn các bạn đã theo dõi.

Bình luận