Bài 12: Authentication (chứng thực) trong laravel 5.x

Admin
07-07-2017

1. Authentication là gì?

Authentication là xác thực người dùng như bạn có phải là administrator hoặc member hay không. Khái niệm Authentication hay bị nhầm lẫn với Authorization (sự ủy quyền) tuy nhiên việc phân biệt 2 khái niệm này đơn giản ta có thể hiểu là Authentication là quá trình xác minh nhận dạng của người dùng còn Authorization là cho người dùng quyền để thực thi thao tác trên hệ thống.

2. Sử dụng Authentication trong Laravel 5

Laravel giúp việc triển khai Authentication trở nên rất đơn giản, hầu hết tất cả mọi thứ đã được cấu hình trước trong file config/auth.php. Bây giờ bạn hãy mở file này lên, có 1 vài điểm lưu ý ở đây mình muốn làm rõ hơn:

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

driver : có 2 lựa chọn là eloquent và database. Mặc định nó sẽ sử dụng model eloquent, tuy nhiên còn một sự lựa chọn khác là database sẽ khiến Laravel làm việc trực tiếp với cơ sở dữ liệu thay vì làm việc với model.

model : Thiết lập này cho Laravel biết model nào được sử dụng để lưu trữ thông tin người dùng theo mặc định thì nó được đặt cho app\User.

Bước 1: Mở Comandline tại thư mục gốc website và nhập lệnh:

php artisan make:auth

Sau khi báo success project của bạn sẽ thay đổi:

- Trong file routes/web.php sẽ có thêm dòng Auth::routes();

Dòng này khai báo các route sử dụng cho việc xác thực bao gồm:

// Khai báo Route đăng nhập, đăng xuất...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
$this->post('logout', 'Auth\LoginController@logout')->name('logout');

// Khai báo route đăng ký...
$this->get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
$this->post('register', 'Auth\RegisterController@register');

// Khai báo Route reset password...
$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm');
$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');
$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm');
$this->post('password/reset', 'Auth\ResetPasswordController@reset');

- Các view cho form login, register, reset password tại thư mục resources\views\auth.

Bước 2: Vào link đăng ký tài khoản đã khai báo ở Route

http://localhost/congnghe5s-laravel/public/register

Trang này phát sinh ra giúp người dùng đăng ký thành viên. Sau khi submit bạn giữ liệu sẽ insert vào database và tài khoản tự động login và redirect về trang home tại đường dẫn http://localhost/congnghe5s-laravel/public/home

Cách kiểm tra tài khoản đã xác thực hay chưa? Lấy thông tin tài khoản đã login thế nào?

Điều này thật đơn giản trong laravel 5. 

// Kiểm tra tài khoản đã login 
Auth::check();

// Lấy thông tin tài khoản đã login
Auth::user();

Qua bài này hy vọng các bạn hiểu về cơ chế Authentication của Laravel. Chúc các bạn thành công!