Laravel Tip💡 : Add Guards JWT
Chia sẻ nhỏ, trường hợp nếu project của bạn có 2 phương thức đăng nhập khác nhau:
1: Có thể dùng Form Login
2: Dùng JWT để login
Chúng ta chỉnh sửa cấu hình trong config/auth.php của project laravel. hiện tại mình đang dùng Laravel 10, muốn cấu hình auth với JWT(Json Web Token)
'defaults' => [
'guard' => 'web',
'passwords' => 'users',
],
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
],
Chúng ta cần lưu ý chổ setup config như trên, bạn xem ở chổ default nó dùng mặc định web driver (session), còn guard add thêm api driver (jwt)
À nếu nhiều phương thức đăng nhập, chúng ta thử tạo nhiều Guards và Provider :)) mình chưa thử, để có thời gian, mình tìm hiểu tiếp😉😃
VD:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'jwt',
'provider' => 'users',
],
'admin' => [ // ➕ Thêm guard admin
'driver' => 'session',
'provider' => 'admins', // Sử dụng provider riêng cho admin
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'admins' => [ // ➕ Thêm provider riêng cho admin
'driver' => 'eloquent',
'model' => App\Models\Admin::class, // Model Admin
],
],
Ta sẽ gọi nó như sau:
// gọi trong controller,...
if (Auth::guard('admin')->check()) {
// Admin đã đăng nhập
}
$admin = Auth::guard('admin')->user();
// hoặc sử dụng gọi cùng với middleware
Route::middleware('auth:admin')->group(function () {
Route::get('/admin/dashboard', function () {
return view('admin.dashboard');
});
});
Có sai gì anh em thông cảm, chia sẻ lại mình, tìm hiểu về nó nhé! 😃