맞춤 테이블을 사용하여 laravel에서 다중 인증 가드 만들기
Membuat multi auth guard pada laravel dengan custom table.
Umumnya kita는 로그인 및 등록을 위한 응용 프로그램 Laravel 시작 키트 시작 키트를 개발합니다. 에이다
laravel/ui
, laravel/breeze
, dan masih banyak lainnya. Namun bawaan 스타터 키트 ini defaultnya ke 테이블 users
, lantas gimana kalau kita pengen ke table yang lainnya?Oke 튜토리얼은 테이블 사용자 정의에 대한 가이드를 제공합니다.
pada tutorial ini saya akan membuat auth admin dari table admins di database.
1. 부아트 데이터베이스 둘루
pertama silahkan buat databse admin dulu, kita bisa menggunakan perintah berikut:
php artisan make:migration create_admins_table
2. auth.php 설정
pergi ke config/auth.php, tambahkan sedikit kode untuk mendukung proses auth dengan guard admin
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
// Tambahkan yang ini 👇
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
// Tambahkan yang ini 👇
'admins' => [
'driver' => 'eloquent',
'model' => App\Models\Admin::class,
],
],
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
// Tambahkan yang ini 👇
'admins' => [
'provider' => 'admins',
'table' => 'password_resets',
'expire' => 60,
'throttle' => 60,
],
],
3. 모델 관리자
관리 모델은 Laravel에서 관리할 수 있으며 모델은 OOP에서 사용할 수 있습니다. Di sini 모델 admin.php merepresentatifkan table admins di database.
부아트 모델 멜라루이 퍼린타:
php artisan make:model Admin
sedikit 편집 kodenya jadi seperti ini:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User; //penting untuk authnya
use Illuminate\Notifications\Notifiable;
class Admin extends User
{
use HasFactory, Notifiable;
protected $fillable = [
'name',
'email',
'password',
];
protected $hidden = [
'password',
'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
}
Dalam konsep auth manual laravel yang terpenting adalah import class
User
bawaan 시스템 laravel.use Illuminate\Foundation\Auth\User;
4. 관리자를 위한 Siapkan 컨트롤러 인증
데이터베이스, 모델, 구성 컨트롤러가 필요합니다. Silahkan 부앗트 컨트롤러는 다음과 같습니다.
php artisan make:controller Admin/AdminController
di sini saya bikin Admin/AdminController agar dibuatkan folder controller tersendiri oleh laravel
sedikit catatan untuk membuat manual auth di laravel, maka disarankan harus import
Auth
다리 파사드. Ini sesuai dokumentasi 공식 dari laravel.comAdminController를 다음과 같이 편집할 수 있습니다.
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AdminController extends Controller
{
use AuthenticatesUsers;
public function __construct()
{
$this->middleware('guest:admin')->except('logout');
}
public function showLoginForm()
{
return view('admin.auth.login');
}
public function login(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'password' => 'required',
]);
// return 'success';
$credentials = [
'email' => $request->email,
'password' => $request->password
];
if ($this->guard()->attempt($credentials, $request->has('remember'))) {
$request->session()->regenerate();
return redirect()->intended('admin');
}
return back()->withErrors([
'email' => 'The provided credentials do not match our records.',
])->onlyInput('email');
}
/**
* Get the guard to be used during authentication.
*
* @return \Illuminate\Contracts\Auth\StatefulGuard
*/
protected function guard()
{
return Auth::guard('admin');
}
}
Yang menjadi perhatian teman-teman adalah guard nya
guard('admin')
부칸 guard()
바이어스. Ini tanda untuk laravel bahwa yang digunakan untuk proses login adalah guard admin dimana menggunakan 테이블 admins
드디어
셋업 코어는 selesai, sisanya tinggal pemanggilan 경로 및 조회수 yang disiapkan untuk controller tadi입니다.
실라칸 멘코바!
🙏
Reference
이 문제에 관하여(맞춤 테이블을 사용하여 laravel에서 다중 인증 가드 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ekoxyz/create-multi-auth-guard-on-laravel-with-custom-table-2kcg텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)