Cơ bản về Laravel Authentication API

Tram Ho

Laravel mặc định có hỗ trợ việc đăng nhập trên trình duyệt bằng session rất rõ ràng, tuy nhiên với sự phát triển của chiếc smartphone thì việc các ứng dụng phải chạy cả trên điện thoại là điều cần thiết. Khi đó chúng ta cần đến chức năng đăng nhập bằng api cho người dùng có thể đăng nhập tài khoản và sử dụng. Hiện tại Laravel đang hỗ trợ 2 cách để authentication cho API là TokenLaravel Passport. Bài viết hôm nay chúng ta sẽ cùng tìm hiểu cơ bản về 2 phương pháp này nhé.

Laravel API Token

Ở bài viết này chúng ta sẽ mặc định dùng bảng users làm bảng chính đăng nhập nhé.
Đầu tiên chúng ta cần config trong file config/auth.php :

Trước khi sử dụng api token, chúng ta cần tạo cột api_token trong bảng users để lưu token của người dùng

Bây giờ chúng ta có thể thêm token cho người dùng khi họ bắt đầu đăng kí tài khoản:

Sau khi đã thiết lập token cho người dùng thành công, chúng ta cần yêu cầu mỗi request đến server của người dùng cần phải truyền vào token:

Cuối cùng để truyền token vào mỗi request chúng ta có 3 cách :

Query String

Request Payload

Bearer Token

Laravel Passport

Laravel Passport là 1 package được phát triền bên ngoài được xây dựng dựa trên League OAuth2 server và hiện nay được Laravel khuyên dùng hơn API Token. Vì là một package bên ngoài nên để cài đặt chúng ta cần dùng đến composer:

Package có sinh ra một số bảng trong database để hỗ trợ cho việc lưu client và access token:

Tiếp theo, bạn cần chạy

Lệnh này sẽ tạo các khóa mã hóa cần thiết để tạo mã thông báo truy cập an toàn. Ngoài ra, lệnh sẽ tạo các ứng dụng khách personal accesspassword grant sẽ được sử dụng để tạo mã thông báo truy cập.
Bên cạnh đó package tạo ra 1 trait cung cấp một số hàm và phương thức cho phép chúng ta có thể tạo token, lấy token … cho user.
Thêm LaravelPassportHasApiTokens trait vào model User nhé :

Tiếp theo chúng ta cần thêm Passport::routes vào AuthServiceProvider. Phương thức này sẽ khởi tạo những routes cần thiết liên quan đến token.

Cuối cùng chúng ta cần config trong config/auth:

Như vậy chúng ta đã hoàn thành việc thiết lập sử dụng Laravel Passport cho việc authentication API. Để tìm hiểu thêm chi tiết các bạn có thể tham khảo trong: https://laravel.com/docs/5.8/passport

Hy vọng những chia sẻ cơ bản trên có thể giúp ích cho mọi người đang gặp vấn đề với Laravel Authentication API.

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo