맞춤 테이블을 사용하여 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.com



AdminController를 다음과 같이 편집할 수 있습니다.

<?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입니다.

실라칸 멘코바!
🙏

좋은 웹페이지 즐겨찾기