Я хотел бы использовать JWT с Laravel Passport для моего собственного API, но использовать свои собственные таблицы / модели.Информация, которую я нашел до сих пор, только подробно описывает установку / настройку по умолчанию или является неполной.
Я новичок в Passport, но уже нашел информацию о том, как пропустить миграцию Passport, добавив «Passport :: IgnoreMigrations ()»к app / Providers / AppServiceProvider.php.
Я также нашел информацию о «findForPassport» и «validateForPassportPasswordGrant», где я могу переопределить, где он получит имя пользователя / пароль, но нет полных примеров, которые можно найти где-либо, простобиты и кусочки.
Я всегда могу пойти на jwt-auth, но везде я нахожу людей, говорящих, что Passport - это официальный путь, и я думаю, что это более надежное будущее для использования Passport.
В Интернете можно найти множество примеров того, как настроить Passport, и все это выглядит очень просто, но если я не хочу использовать таблицы / модели по умолчанию, найти информацию становится очень сложно.Мой API работает без аутентификации, и я сделал первые части, чтобы добавить паспортную аутентификацию:
composer require laravel/passport
Adding the proper service provider
Пропустить php artisan passport: установить, иначе он попытается добавить данные в таблицы, которых там нет, поэтому я просто генерируюключи:
php artisan passport:keys
В моем маршруте / api.php я добавил все маршруты к промежуточному программному обеспечению:
Route::middleware('auth:api')->group( function () {
...
}
Я также изменил свой config / auth.php:
'guards' => [
'api' => [
'driver' => 'passport',
'provider' => 'User',
],
],
Обратите внимание, что моя модель - Пользователь с пользователями таблицы.Вот фрагмент моей миграции:
Schema::create('users', function (Blueprint $table) {
$table->increments('userid'); /* User ID */
$table->string('username', 30); /* Username */
$table->string('password', 64); /* Password */
$table->string('firstname', 100); /* First name */
$table->string('lastname', 100); /* Last name */
$table->string('email', 128); /* Email address */
$table->binary('avatar')->nullable(true); /* Picture of user */
$table->string('phone',30); /* Phone number */
$table->unsignedInteger('deptid')->nullable(true); /* Department ID */
/* Note that there is a foreign key needed for the department ID but since the order matters in the creation
of the tables I will create a separate migrations file for the foreign keys */
$table->string('timezone', 32); /* Local timezone of the user */
$table->boolean('active'); /* Is the user active (true) / inactive (false) */
$table->dateTime('lastlogon')->nullable(true); /* Last logon date/time */
$table->unsignedInteger('created_by')->nullable(true); /* Which user ID created the record */
$table->unsignedInteger('updated_by')->nullable(true); /* Which user ID updated the record */
$table->timestamps(); /* Timestamps - created_at / updated_at */
});
Мне нужно будет добавить токен и дату / время истечения срока, но я не знаю, как действовать дальше.
Как я могу переопределитьостальные, чтобы это работало?Я хочу вернуть веб-токен (при успешном входе в систему), чтобы его можно было использовать для всех запросов API.Добавление дополнительного кода для проверки того, что веб-токен все еще действителен для каждого запроса, не должно быть такой большой работой.И все это без использования таблиц по умолчанию, которые использует Passport.