Với sự hoành tráng của mô hình client server -- WEB API thì khái niệm api không còn lạ với chúng ta nữa. Với sự hoành tráng của mô hình client server -- WEB API thì khái niệm api không còn lạ với chúng ta nữa.
2021-07-06 3005 lượt xem
- Trang Chủ
- laravel
- Hướng dẫn sử dụng jwt token với laravel php sử dụng thư viện tymon auth
hùng đẹp trai
đọc dữ liệu hộ bố
ahihi đồ ngốc trương thanh hùng nè
hùng đẹp trai
đọc dữ liệu hộ bố
hùng ebudezain
hùng đẹp trai
hùng thông minh lắm
đọc dữ liệu hộ bố
hùng thông minh lắm
đọc dữ liệu hộ bố
bài viết được viết bởi trương thanh hùng //ebudezain.com/
hùng thông minh lắm
Và JWT token cũng thế, ở khuôn khổ bài này mình không nói về jwt là gì. Mình chỉ hướng dẫn cho các bạn cách nhúng jwt vào laravel cho api.
tôi thích vậy đó
ahihi đồ ngốc trương thanh hùng nè
hùng thông minh lắm
đọc dữ liệu hộ bố
ahihi đồ ngốc trương thanh hùng nè
1. cài package
tôi thích vậy đó
hùng đẹp trai
composer require tymon/jwt-auth
hùng ebudezain
2. config provider và alias
ahihi đồ ngốc trương thanh hùng nè
bài viết được viết bởi trương thanh hùng //ebudezain.com/
bài viết được viết bởi trương thanh hùng //ebudezain.com/
tôi thích vậy đó
đọc dữ liệu hộ bố
hùng đẹp trai
bài viết được viết bởi trương thanh hùng //ebudezain.com/
Sau khi install package hoàn tất, bạn cần thêm service provider vào mảng provider trong file config app.php :
hùng ebudezain
tôi thích vậy đó
hùng ebudezain
đọc dữ liệu hộ bố
Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class,
hùng ebudezain
hùng thông minh lắm
tôi thích vậy đó
đọc dữ liệu hộ bố
hùng đẹp trai
cũng tại file app.config đó bạn thêm aliases cho 2 lớp thường dùng:
hùng ebudezain
tôi thích vậy đó
bài viết được viết bởi trương thanh hùng //ebudezain.com/
'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
'JWTFactory' => 'Tymon\JWTAuth\Facades\JWTFactory'::class,
đọc dữ liệu hộ bố
hùng ebudezain
3. tạo file config để jwt hoạt động
ahihi đồ ngốc trương thanh hùng nè
hùng ebudezain
tôi thích vậy đó
hùng thông minh lắm
Sau cùng bạn cần publish config của jwt [ kiểu như nó tạo cái file config vào hệ thống laravel ]
ahihi đồ ngốc trương thanh hùng nè
ahihi đồ ngốc trương thanh hùng nè
hùng thông minh lắm
hùng thông minh lắm
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
ahihi đồ ngốc trương thanh hùng nè
4. Tạo secret key
ahihi đồ ngốc trương thanh hùng nè
tôi thích vậy đó
Theo lý thuyết jwt dĩ nhiên muốn tạo ra 1 token bạn cần cung cấp 1 secret key
tạo
secret key trong laravel khá dễ :
bài viết được viết bởi trương thanh hùng //ebudezain.com/
đọc dữ liệu hộ bố
hùng ebudezain
Nếu bạn sử dụng jwt để thực hiện xác thực cho việc trao đổi thông tin giữa 2 server
thì 2 key của 2 server phải giống nhau thì mới có thể giải mã được ...
Vì vậy, bạn có thể tạo 1 key bất kỳ bên server này và copy cho server
kia.
hùng đẹp trai
ahihi đồ ngốc trương thanh hùng nè
ahihi đồ ngốc trương thanh hùng nè
đọc dữ liệu hộ bố
bài viết được viết bởi trương thanh hùng //ebudezain.com/
đọc dữ liệu hộ bố
tôi thích vậy đó
ahihi đồ ngốc trương thanh hùng nè
hùng ebudezain
bài hướng dẫn giải mã jwt của php laravel trong nodejs
tôi thích vậy đó
đọc dữ liệu hộ bố
5. sửa lại model user để tiêm cái id user vào claim
hùng thông minh lắm
tôi thích vậy đó
hùng thông minh lắm
đọc dữ liệu hộ bố
bạn cần implements cái interface tên JWTSubject và thực thi 2 phương thức getJWTIdentifier, getJWTCustomClaims mục tiêu là để khi tạo token thì jwt của bạn được gắn chặt với 1 vái value là id của user. Sau đó khi giải mã thì ta được 1 object user tương ứng
đọc dữ liệu hộ bố
ahihi đồ ngốc trương thanh hùng nè
namespace App\Models;
/// ...
use Tymon\JWTAuth\Contracts\JWTSubject;
class User extends Authenticatable implements JWTSubject
{
use HasFactory, Notifiable;
/**
* @return int
*/
public function getJWTIdentifier[] {
return $this->getKey[];
}
/**
* @return array
*/
public function getJWTCustomClaims[] {
return [
"iss" => "//localhost",
"ahihi" => "đồ ngốc CustomClaims"
];
}
//// .....
}
hùng ebudezain
hùng ebudezain
hùng đẹp trai
đọc dữ liệu hộ bố
ahihi đồ ngốc trương thanh hùng nè
hùng thông minh lắm
hùng thông minh lắm
6. lưu ý thông tin file config
đọc dữ liệu hộ bố
hùng ebudezain
đọc dữ liệu hộ bố
Secret Key - secret
đọc dữ liệu hộ bố
hùng đẹp trai
đọc dữ liệu hộ bố
bài viết được viết bởi trương thanh hùng //ebudezain.com/
đọc dữ liệu hộ bố
bài viết được viết bởi trương thanh hùng //ebudezain.com/
Cái tên nói
lên tất cả 😄 Mục 4 mình vừa trình bày là cái key này, khi bạn muốn 2 server giải mã qua lại thì 2 server phải có key giống nhau.
Mặc định load trong env cái biến JWT_SECRET không thì nó lấy đại
ahihi đồ ngốc trương thanh hùng nè
bài viết được viết bởi trương thanh hùng //ebudezain.com/
hùng đẹp trai
tôi thích vậy đó
tôi thích vậy đó
ahihi đồ ngốc trương thanh hùng nè
'secret' => env['JWT_SECRET', 'hung-dep-trai'],
hùng ebudezain
ahihi đồ ngốc trương thanh hùng nè
tôi thích vậy đó
hùng thông minh lắm
JWT time to live - ttl
đọc dữ liệu hộ bố
bài viết được viết bởi trương thanh hùng //ebudezain.com/
hùng ebudezain
hùng thông minh lắm
hùng đẹp trai
bài viết được viết bởi trương thanh hùng //ebudezain.com/
bài viết được viết bởi trương thanh hùng //ebudezain.com/
đọc dữ liệu hộ bố
1 token tạo ra phải có thười gian sống [tính bằng phút]. Khuyến nghị ngắn thôi.
đọc dữ liệu hộ bố
tôi thích vậy đó
Refresh time to live - refresh_ttl
đọc dữ liệu hộ bố
hùng thông minh lắm
ahihi đồ ngốc trương thanh hùng nè
hùng thông minh lắm
đọc dữ liệu hộ bố
hùng ebudezain
hùng ebudezain
hùng thông minh lắm
hùng ebudezain
Đây là thời gian [tính bằng phút] bạn có thể tạo mới một token khác từ token cũ mà ko cần xác thực lại...
bài viết được viết bởi trương thanh hùng //ebudezain.com/
ahihi đồ ngốc trương thanh hùng nè
ahihi đồ ngốc trương thanh hùng nè
'refresh_ttl' => 20160, //2 week
đọc dữ liệu hộ bố
Tạo một token đơn giản
hùng thông minh lắm
Tạo một token dự trên user
bài viết được viết bởi trương thanh hùng //ebudezain.com/
hùng thông minh lắm
hùng ebudezain
bài viết được viết bởi trương thanh hùng //ebudezain.com/
ahihi đồ ngốc trương thanh hùng nè
hùng ebudezain
hùng thông minh lắm
ahihi đồ ngốc trương thanh hùng nè
tôi thích vậy đó
hùng đẹp trai
class LoginCotnroller trong thư mục api như sau:
tôi thích vậy đó
bài viết được viết bởi trương thanh hùng //ebudezain.com/