Сопоставление разных имен столбцов и таблиц для Laravel аутентификации без перезаписи всех классов аутентификации - PullRequest
0 голосов
/ 29 мая 2020

Мы храним нашу аутентификационную информацию в других таблицах и именах столбцов, чем Laravel использует по умолчанию. Он все еще хранится в MySQL. При проведении исследования в документации говорится, что мы должны написать совершенно разные обработчики аутентификации.

Неужели нет никакого способа просто переназначить имена таблиц и столбцов в центральном месте? Если нет, есть ли лучший способ справиться с этим? Должны ли мы просто создать новую таблицу, используя информацию аутентификации?

Ответы [ 2 ]

0 голосов
/ 29 мая 2020

Модель, связанная с процессом входа в систему, может быть изменена в:

config/auth.php

в разделе «провайдеры»:

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

Однако процесс входа в систему немного сложнее . LoginController использует трейт AuthenticatesUsers, где вы можете переопределить требуемые методы. Например, метод входа в систему

class LoginController extends Controller
{
    use AuthenticatesUsers;

    public function login(Request $request) 
    {
        //Do whatever you have to do
        return $this->sendLoginResponse($request);
    }

}

Итак, в основном, я рекомендую вам изучить

Illuminate\Foundation\Auth\AuthenticatesUsers 

и повторно использовать как можно больше из этого класса и переопределить только те методы, которые вам нужны. к.

0 голосов
/ 29 мая 2020

Вы можете изменить название вашей таблицы / модели для аутентификации внутри файла config \ auth. php.

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

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],

Теперь, когда дело доходит до изменения имени столбца по умолчанию Laravel, используя электронную почту поле, которое вы можете изменить, поместив функцию username (), которая вернет поле, которое будет использоваться для аутентификации внутри LoginController. php.

public function username()
{
    return 'username';
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...