Bài tập

Thay đổi Bảng Xác thực trong Laravel

Huy Erick

Trên đây là một bài hướng dẫn về cách thay đổi Bảng Xác thực trong Laravel để sử dụng một bảng khác thay vì bảng mặc định "users". Bài viết này sẽ hướng dẫn đầy...

Trên đây là một bài hướng dẫn về cách thay đổi Bảng Xác thực trong Laravel để sử dụng một bảng khác thay vì bảng mặc định "users". Bài viết này sẽ hướng dẫn đầy đủ các bước cần thiết để thực hiện thay đổi này.

Bước 1: Tạo và Chạy Migrations

Đầu tiên, bạn cần tạo và chạy migrations cho bảng mới của bạn. Bạn có thể làm điều này bằng cách chạy các lệnh sau:

php artisan make:migration create_customusers_table

Lệnh trên sẽ tạo ra một script migration mới trong thư mục "database > migrations". Bạn có thể chỉnh sửa file này để bao gồm thêm các cột khác trong bảng của bạn theo yêu cầu. Dưới đây là một ví dụ về việc chỉnh sửa file migration:

increments('id');
            $table->string('name');
            $table->string('username');
            $table->string('passcode');
            $table->string('email');
            $table->boolean('active');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('customusers');
    }
}

Sau khi bạn đã hoàn thành việc chỉnh sửa, bạn có thể chạy lệnh migrate để tạo bảng trong cơ sở dữ liệu của bạn:

php artisan migrate

php artisan migrate customuser table

Lưu ý: Bạn có thể bỏ qua bước này nếu bạn đã có bảng được tạo sẵn với các trường tên người dùng và mật khẩu mong muốn.

Bước 2: Tạo Model cho bảng của bạn

Khi đã có bảng sẵn sàng để sử dụng cho xác thực, hãy tạo một Model tương ứng với nó. Ví dụ, bạn có thể tạo một file "CustomUser.php" trong thư mục "App" mà extends từ class "Illuminate\Foundation\Auth\User".

passcode;
    }
}

Ở đây, tôi sử dụng trường "passcode" để lưu mật khẩu. Tôi đã ghi đè phương thức "getAuthPassword()" để chỉ định rõ trường này làm mật khẩu. Bạn có thể bỏ qua bước này nếu tên trường mật khẩu của bạn là "password" (mặc định).

Bước 3: Chỉnh sửa tệp auth.php

Tiếp theo, chúng ta cần chỉnh sửa tệp auth.php trong thư mục "config". Chỉnh sửa phần "providers" và "passwords" như sau:

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],

    'customusers' => [
        'driver' => 'eloquent',
        'model' => App\CustomUser::class,
    ],
],

'passwords' => [
    'users' => [
        'provider' => 'users',
        'table' => 'password_resets',
        'expire' => 60,
    ],

    'customusers' => [
        'provider' => 'customusers',
        'table' => 'password_resets',
        'expire' => 60,
    ],
],

Sau đó, hãy chỉnh sửa cấu hình "guards" để sử dụng provider "customusers" thay vì provider mặc định "users". Chỉnh sửa mục "web" như sau:

'web' => [
    'driver' => 'session',
    'provider' => 'customusers',
],

'defaults' => [
    'guard' => 'web',
    'passwords' => 'customusers',
],

Bước 4: Chỉnh sửa Controllers và views Xác thực

Cuối cùng, chúng ta cần chỉnh sửa tệp RegisterController để điều chỉnh các trường theo bảng mới. Hãy chỉnh sửa tệp RegisterController như sau:

middleware('guest');
    }

    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|string|max:255',
            'username' => 'required|string|max:255|unique:customusers',
            'email' => 'required|string|email|max:255|unique:customusers',
            'passcode' => 'required|string|min:6|confirmed',
        ]);
    }

    protected function create(array $data)
    {
        return CustomUser::create([
            'name' => $data['name'],
            'username' => $data['username'],
            'email' => $data['email'],
            'passcode' => bcrypt($data['passcode']),
            'active' => 1,
        ]);
    }
}

Cuối cùng, chỉnh sửa tệp "register.blade.php" để phù hợp với các trường mới trong bảng của bạn.

@extends('layouts.app')

@section('content')
Đăng ký
{{ csrf_field() }}
@if ($errors->has('name')) {{ $errors->first('name') }} @endif
@if ($errors->has('username')) {{ $errors->first('username') }} @endif
@if ($errors->has('email')) {{ $errors->first('email') }} @endif
@if ($errors->has('passcode')) {{ $errors->first('passcode') }} @endif
@endsection

Đó là tất cả những gì bạn cần làm để thay đổi Bảng Xác thực trong Laravel! Hy vọng bài viết này đã giúp bạn.

?>
1